我正在构建一个GUI应用程序,在该应用程序中,我需要不断向每个JFrame传递单个String。我使用的方法是
frame2 frame 2 = new frame2();
String text = passabledata.getText(); //passabledata here is the name of the textField in frame1
frame2.jtextField1.setText(text); //jTextField1 is public static TextField in frame2
frame2.setVisible(true);
this.setVisible(false);
我想使用一种更简单的传递和获取数据的方法
我正在考虑声明一个变量,以便每个JFrame都可以使用:
final String abc = (global variable name).getText();
和全局变量将在第一个GUI页面使用
声明。 private void jbutton1MouseClicked(java.awt.event.MouseEvent evt)
{
String text = username.getText(); //username is a jTextField
(universal variable).setText(text);
}
请帮助我。
答案 0 :(得分:2)
这是一个足够普遍的问题,您在开发生命中几乎会一直面临。
虽然有几种方法可以做到这一点,但您必须了解从长远来看哪种方法可以为您服务。
作为一般的经验法则,像大多数编程语言一样,全局变量(在这种情况下为静态变量)表示风险,并且通常表示设计不良。一般来说,应尽可能避免使用它们,并使用其他技术。程序变得越复杂,就越容易完全弄清您的状态。
最简单的解决方案是直接通过类构造函数或方法调用将您对其他类感兴趣的信息直接传递给它们。有关更多详细信息,请参见Passing Information to a Method or a Constructor
还有其他一些方法也可以使用,例如Observer Pattern,生产者/消费者和其他behavioral patterns,但是它们基于通过方法/函数调用传递信息的基本原理。 / p>
答案 1 :(得分:1)
您将希望将至少一个变量传递给每一帧的构造函数。然后,此变量可以具有您可能需要的任何字段。
不幸的是,除非您使用本地/匿名内部类或lambda表达式,否则Java在构造对象时非常冗长。
不要使用全局状态(又称静态)。