我是Java的新手,但是碰到了砖墙。我想从另一个类访问GUI组件(已在一个类中创建)。我正在从一个类创建一个新的GUI类,就像这样;
GUI gui = new GUI();
并且我可以访问该类中的组件,但是当我去另一个类时,我不能。我真的只需要访问JTextAreas
即可更新其内容。有人可以向我指出正确的方向,任何帮助将不胜感激。
GUI
类:
public class GUI {
JFrame frame = new JFrame("Server");
...
JTextArea textAreaClients = new JTextArea(20, 1);
JTextArea textAreaEvents = new JTextArea(8, 1);
public GUI()
{
frame.setLayout(new FlowLayout(FlowLayout.LEADING, 5, 3));
...
frame.setVisible(true);
}
}
首先要尊重封装规则。做你的领域private
。接下来,您需要输入getters
需要访问的字段。
public class GUI {
private JTextField field = new JTextField();
public GUI() {
// pass this instance of GUI to other class
SomeListener listener = new SomeListener(GUI.this);
}
public JTextField getTextField() {
return field;
}
}
然后,您需要将GUI传递给访问文本字段所需的任何类。说一ActionListener
堂课。使用构造函数注入(或 “传递引用”
)进行GUI
类的传递。执行此操作时,中GUI
被引用的对象SomeListener
是同一对象,并且您永远不会创建新对象(不会引用您需要的同一实例)。
public class SomeListener implements ActionListener {
private GUI gui;
private JTextField field;
public SomeListener(GUI gui) {
this.gui = gui;
this.field = gui.getTextField();
}
}
尽管上述方法 可能
有效,但可能不必要。首先考虑一下您想对文本字段执行什么操作。如果可以在GUI类中执行某些操作,但是您只需要访问该类中的某些内容即可执行该操作,则可以interface
使用需要执行某些操作的方法来实现。像这样
public interface Performable {
public void someMethod();
}
public class GUI implements Performable {
private JTextField field = ..
public GUI() {
SomeListener listener = new SomeListener(GUI.this);
}
@Override
public void someMethod() {
field.setText("Hello");
}
}
public class SomeListener implements ActionListener {
private Performable perf;
public SomeListener(Performable perf) {
this.perf = perf;
}
@Override
public void actionPerformed(ActionEvent e) {
perf.someMethod();
}
}
我是爪哇的新手,遇到了困难。我想从另一个类访问GUI组件(在一个类中创建)。我正在从一个类创建一个新的GUI类,就像这样; 我可以访问该类中的组件,但当我转到其他类时,我无法访问。我真的需要访问来更新它们的内容。有人能给我指一下正确的方向吗?非常感谢您的帮助。 类:
我是一名Java程序员初学者。我试图在类交通中访问类车中的两个列表,这样我就可以执行while循环,循环直到主类中的列表为空 这就是我现在掌握的代码,我试着从普通车上扩展流量,但没有成功,我被卡住了。我该怎么解决这个问题?
我想访问另一个类的列表,然后把它放在我的对象中。 包含列表的第一个类。 从第一类访问列表的第二类。 当我使用时,它不会返回任何类似于空列表的内容,并且不会在应用程序上显示任何内容。
我是java新手,我不知道如何从另一个类访问变量 我正在尝试编写一个代码来发送带有未存储在本地的附件的邮件。我想访问SendMail类中ExcelFile类中编写的变量 如何在另一个类中访问excelFileAsByte并发送邮件而不将其存储在本地。我可以使用addBodyPart和ByteArrayResource将文件添加为附件吗。