我是爪哇的新手,遇到了困难。我想从另一个类访问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);
}
}
访问这些文本区域的最佳选择是为它们创建一个get方法。像这样的东西:
public JTextArea getTextAreaClients(){
return this.textAreaClients;
}
另一个也一样。所以要从另一个类访问它:
GUI gui = new GUI();
gui.getTextAreaClients();
无论如何,您需要在任何想要使用gui对象的类中对其进行引用,或者从创建gui对象的类中对其进行引用。
编辑 ---------------------------------------
要从GUI获取文本区域到服务器,您可以在Create-Server中执行这样的操作。
GUI gui = new GUI();
Server server = new Server();
server.setTextAreaClients(gui.getTextAreaClients());
为此,您应该在服务器内部包含一个JTextArea字段,以及setTextAreaClients方法,该方法如下所示:
JTextArea clients;
public void setTextAreaClients(JTextArea clients){
this.clients = clients;
}
因此,通过这种方式,您将从gui中获得对JTextArea的引用。
有几种可能的方法:
>
标识符gui
是对您的GUI
实例的引用。您可以将gui
传递给任何需要的类,只要您尊重事件调度线程。根据需要将公共访问器方法添加到GUI。
声明,如JTextArea文本区域客户端
具有包私有的可访问性。它们可以从同一个包中的其他类中引用。
使用PropertyChangeListener
,安排文本区域接收来自另一个类的事件,如下所示。
首先要遵守封装规则。将你的字段设置为私有。接下来,您需要为需要访问的字段设置getter
。
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
类。执行此操作时,SomeListener
中引用的GUI
是同一个,并且您永远不会创建新的GUI(它不会引用您需要的同一个实例)。
public class SomeListener implements ActionListener {
private GUI gui;
private JTextField field;
public SomeListener(GUI gui) {
this.gui = gui;
this.field = gui.getTextField();
}
}
虽然上述方法可能奏效,但它可能是不必要的。首先想想你到底想对文本字段做什么。如果某些操作可以在GUI类中执行,但您只需要访问类中的某些东西来执行它,那么您可以使用需要执行某些操作的方法来实现一个接口
。像这样的东西
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将文件添加为附件吗。