我正在通过一个练习来理解 Java,基本上我需要将两个类的功能合并到一个应用程序中。
虽然我被困在一个领域 - 跨类引用对象。
我所做的是在一个类 (test1) 中设置一个 gui,它在 ie 中有一个文本字段。
chatLine = new JTextField();
在另一个类 (test2) 中,我计划将所有功能保留在那里并引用在 test1 中设置的各种 gui 元素 - 就像这个 test1.chatLine
我理解这个级别的引用,我通过在 test2 类中设置一个测试方法来测试这个
public static void testpass() {
test1.testfield.setText("hello");
}
不过,我正在尝试了解如何在 test2 类中实现更复杂的功能,特别是这个现有代码;
test1.chatLine.addActionListener(new ActionAdapter() {
public void actionPerformed(ActionEvent e) {
String s = Game.chatLine.getText();
if (!s.equals("")) {
appendToChatBox("OUTGOING: " + s + "\n");
Game.chatLine.selectAll();
// Send the string
sendString(s);
}
}
});
这是我坚持的一点,如果我应该能够做到这一点 - 因为它在编译时失败了,我可以将 actionadapter 东西添加到位于 test1 中的 gui 元素中,但是从 test2 执行此操作 -我想知道我是否正在尝试做一些不可能的事情。
希望这是有道理的,我对此很困惑 - 我正在尝试了解范围和引用的工作原理。
理想情况下,我想要实现的是一个类,其中包含所有主要内容,gui 等,然后是另一个类中的所有相关功能,并将结果等定位到第一个类的 gui 元素。
非常感谢任何想法。
最佳答案
如果您首先可以访问 chatLine
,则可以调用它的(公共(public))方法,包括 addActionListener
。要直接访问 chatLine
,您需要将其设置为public
,并且如果您想让它特定于类(与不同的 chatLine
相对) > 对于类的每个实例),它需要是static
。
但是请注意,通常最好不要公开变量。首先拥有类和对象的一个重要原因是封装。您可能会考虑通过将其设为私有(private)并仅提供更高级别的公共(public)方法来访问所需内容来将实现隐藏在类中,例如不要公开“原始”JTextField
,而是公开您使用它提供的功能。
关于java - 停留在 Java 中的对象范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552322/