使用一个类创建和运行多个Java窗口
下面的程序将创建两个简单的窗口,我们可以在其中键入一些文本,它将显示在两个窗口的显示屏上 我创建了一个类来生成UI。但是,当我使用同一个类创建2个对象(typeWriterObj1和typeWriterObj2)并单击btnSend时 键入的消息始终定向并显示在上次创建的窗口中(例如:我在Alice的使用一个类创建和运行多个Java窗口,java,swing,class,jframe,actionlistener,Java,Swing,Class,Jframe,Actionlistener,下面的程序将创建两个简单的窗口,我们可以在其中键入一些文本,它将显示在两个窗口的显示屏上 我创建了一个类来生成UI。但是,当我使用同一个类创建2个对象(typeWriterObj1和typeWriterObj2)并单击btnSend时 键入的消息始终定向并显示在上次创建的窗口中(例如:我在Alice的txtMessage中键入文本,然后单击btnSend,文本显示在Bob的窗口中,而不是Alice的窗口中) 参见下面的示例: public class TextProgram { p
txtMessage
中键入文本,然后单击btnSend
,文本显示在Bob的窗口中,而不是Alice的窗口中)
参见下面的示例:
public class TextProgram
{
public static void main(String[] args)
{
TypeWriterUI typeWriterObj1 = new TypeWriterUI();
TypeWriterUI typeWriterObj2 = new TypeWriterUI();
TypeWriterObj1.showGUI("Alice");
TypeWriterObj2.showGUI("Bob");
}
}
class TypeWriterUI extends JPanel
{
static JButton btnSend;
static JTextArea txtDisplay = new JTextArea();
static JTextArea txtMessage = new JTextArea();
//...Codes which add the swing components
//ActionListerner for btnSend which transfer input text from txtMessage to txtDisplay
}
Que:如果不使用多线程,如何解决此问题?撤消使字段
为静态的操作(每个类一个实例)。两个GUI共享每个按钮实例。这甚至是一个奇迹;可能两次将新的JButton分配给同一个变量,以此类推。谢谢。但是,如果我希望从一个窗口输入的文本在两个窗口中都显示,我可以使用static吗?我将删除按钮的静电干扰。:)不,任何GUI组件,如JTextField,都会持有对其父级的引用,并且只能是一个。您可以添加一个更改侦听器,并将新值传递给包含这两个GUI类的控制器对象,然后将该新值传递给另一个类。这就是所谓的MVC,模型Vieew控制器,模式。最好保存JFrames,并为其提供public void updateText(字符串newValue)代码>。