我有一个 GUI 屏幕,里面有一个标签。我现在想用文本设置标签,如下所示(Test
)。但它没有得到更新。我认为以下代码中有错误,我在 try 块中重新创建了 FrameTest 的新对象;
FrameTest frame = new FrameTest();
frame.setVisible(true); //(the full code given below)
完整代码: 注意:以下类扩展自JFrame
import java.awt.BorderLayout;
public class FrameTest extends JFrame {
private JPanel contentPane;
private JLabel lblLabel;
public void mainScreen() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FrameTest frame = new FrameTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void writeLabel(String k){
this.lblLabel.setText(k);
}
public FrameTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
lblLabel = new JLabel("LABEL");
contentPane.add(lblLabel, BorderLayout.CENTER);
}
}
测试班
public class Test {
public static void main(String[] args) {
FrameTest f = new FrameTest();
f.mainScreen();
f.writeLabel("FFFFF");
}}
求助,如何获取文本"FFFFF"
显示到标签上?
In your mainScreen()
你创建一个新的FrameTest
这与您在中创建的不同main
例程,所以它实际上改变了不可见框架的文本。试试这个:
private FrameTest frame = this;
public void mainScreen() {
EventQueue.invokeLater(new Runnable() {
public void run() {
frame.setVisible(true);
}
});
}
或者简单地:
public void mainScreen() {
EventQueue.invokeLater(new Runnable() {
public void run() {
setVisible(true);
}
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)