Java 从另一个方法更改Jlabel的文本
我很抱歉,如果这个问题的解决方案是显而易见的,我相信这个解决方案很简单,我只是无法在我的脑海中找到正确的答案 我已经创建了JFrame,如下代码所示。我希望在我的主要方法中更改标签(lblStatus)的文本,但我似乎无法使其正常工作。我是否需要创建标签的新实例或沿着这些线的其他内容 有人能告诉我该采取什么方法吗 问候,, 丹 注意-我删除了一些内容以突出显示相关代码Java 从另一个方法更改Jlabel的文本,java,swing,jlabel,textlabel,Java,Swing,Jlabel,Textlabel,我很抱歉,如果这个问题的解决方案是显而易见的,我相信这个解决方案很简单,我只是无法在我的脑海中找到正确的答案 我已经创建了JFrame,如下代码所示。我希望在我的主要方法中更改标签(lblStatus)的文本,但我似乎无法使其正常工作。我是否需要创建标签的新实例或沿着这些线的其他内容 有人能告诉我该采取什么方法吗 问候,, 丹 注意-我删除了一些内容以突出显示相关代码 public class server { private JFrame frmCorbaServer; /** * La
public class server {
private JFrame frmCorbaServer;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
server window = new server();
window.frmCorbaServer.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
// SERVER CONTENT
// If connection made
System.out.println("Server connected"); // I want this to display in lblStatus!
}
/**
* Create the application.
*/
public server() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmCorbaServer = new JFrame();
frmCorbaServer.setTitle("server 0.1");
frmCorbaServer.setResizable(false);
frmCorbaServer.setBounds(100, 100, 257, 153);
frmCorbaServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCorbaServer.getContentPane().setLayout(null);
JLabel lblStatus = new JLabel("...");
lblServant.setFont(new Font("Tahoma", Font.PLAIN, 10));
lblServant.setBounds(10, 36, 231, 14);
frmCorbaServer.getContentPane().add(lblServant);
}
}
JLabel应该是实例成员。处理程序将帮助您在实例方法中修改标签的文本
public class server
{
private JLabel lblStatus= new JLabel("Text") ;
public void changeLabel(String text)
{
lblStatus.setText(text) ;
}
}
主界面中:window.changelab(“主界面中”)代码>
必须这样做,因为在初始化方法中,对lblStatus
的引用丢失
private void initialize() {
frmCorbaServer = new JFrame();
frmCorbaServer.setTitle("server 0.1");
frmCorbaServer.setResizable(false);
frmCorbaServer.setBounds(100, 100, 257, 153);
frmCorbaServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCorbaServer.getContentPane().setLayout(null);
JLabel lblStatus = new JLabel("..."); // Forgotten when method finishes
lblServant.setFont(new Font("Tahoma", Font.PLAIN, 10));
lblServant.setBounds(10, 36, 231, 14);
frmCorbaServer.getContentPane().add(lblServant);
}
JLabel应该是实例成员。处理程序将帮助您在实例方法中修改标签的文本
public class server
{
private JLabel lblStatus= new JLabel("Text") ;
public void changeLabel(String text)
{
lblStatus.setText(text) ;
}
}
主界面中:window.changelab(“主界面中”)代码>
必须这样做,因为在初始化方法中,对lblStatus
的引用丢失
private void initialize() {
frmCorbaServer = new JFrame();
frmCorbaServer.setTitle("server 0.1");
frmCorbaServer.setResizable(false);
frmCorbaServer.setBounds(100, 100, 257, 153);
frmCorbaServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCorbaServer.getContentPane().setLayout(null);
JLabel lblStatus = new JLabel("..."); // Forgotten when method finishes
lblServant.setFont(new Font("Tahoma", Font.PLAIN, 10));
lblServant.setBounds(10, 36, 231, 14);
frmCorbaServer.getContentPane().add(lblServant);
}
我不熟悉CORBA编程,所以只能给出一些一般性的建议。首先,您需要知道服务器何时连接。这很可能不会发生在main()
方法中。是否有一个侦听器或其他回调方法被调用以通知您服务器已连接
一旦您了解了这一部分,更改JLabel的文本就相当容易了。首先,您需要声明一个实例变量:
private JLabel lblStatus;
在initialize()
中创建JLabel时,不需要声明:
lblStatus = new JLabel("...");
最后,当您知道服务器已连接时,只需调用setText()
方法:
lblStatus.setText("Server connected");
我不熟悉CORBA编程,所以只能给出一些一般性的建议。首先,您需要知道服务器何时连接。这很可能不会发生在main()
方法中。是否有一个侦听器或其他回调方法被调用以通知您服务器已连接
一旦您了解了这一部分,更改JLabel的文本就相当容易了。首先,您需要声明一个实例变量:
private JLabel lblStatus;
在initialize()
中创建JLabel时,不需要声明:
lblStatus = new JLabel("...");
最后,当您知道服务器已连接时,只需调用setText()
方法:
lblStatus.setText("Server connected");
谢谢你的快速回复。然而,我得到了一个错误。“无法对非静态方法进行静态引用”只有main是静态的。我正在呼叫服务器。主界面中的changeLabel(“已连接”)
。窗口无法解析。
:/。我真的需要复习一下我的基本java技能。它位于run()
中,如代码所示。我正在调用主窗口中的window.changelevel(“”
)。我应该在run之外创建一个窗口变量吗?请注意,我在Eclipse中使用WindowBuilder构建了这个GUI。我不认为这会让事情变得如此糟糕。在EventQueue.InvokeLater之前,在main中使用server window=null。然后,内部类应该能够访问它。它也将在主屏幕上显示。谢谢您的快速回复。然而,我得到了一个错误。“无法对非静态方法进行静态引用”只有main是静态的。我正在呼叫服务器。主界面中的changeLabel(“已连接”)
。窗口无法解析。
:/。我真的需要复习一下我的基本java技能。它位于run()
中,如代码所示。我正在调用主窗口中的window.changelevel(“”
)。我应该在run之外创建一个窗口变量吗?请注意,我在Eclipse中使用WindowBuilder构建了这个GUI。我不认为这会让事情变得如此糟糕。在EventQueue.InvokeLater之前,在main中使用server window=null。然后,内部类应该能够访问它。如果可能的话,你能举一个与我的代码相关的例子吗?从上面你可以看到。我在这方面有很多问题。如果可能的话,你能举一个与我的代码相关的例子吗?从上面你可以看到。我在这方面有很多麻烦。