【发布时间】:2020-01-12 20:29:12
【问题描述】:
我已经在这个网站和互联网上搜索了几个小时,试图找出如何解决这个问题。我正在创建一个游戏,这是我第一次使用图形。我想出了如何创建 JFrame、JPanel 和 JLabel,而我似乎无法解决的唯一问题是更新 JLabel。假设我是这样开始的:
JLabel testing = new JLabel ("blah", JLabel.CENTER);
testing.setAlignmentX(0);
testing.setAlignmentY(0);
frame.add(testing);
我可以通过使用testing.setText("hi"); 来更改Thread.sleep(2500) 之后的文本,但是JLabel 的先前状态(上面写着blah)仍然存在。 “嗨”只是出现在顶部。我试过testing.setVisible(false);,还有很多其他的东西,但没有什么能让我显示JLabel,隐藏它,然后改变它。
有什么想法可能是错的吗? 谢谢
【问题讨论】:
-
setText应该按您的预期工作;一定还有其他问题。你能展示更多你的代码吗? -
查看The Event Dispatch Thread 和Concurrency in Swing 以更好地了解Swing API 的工作原理以及您遇到问题的原因。请参阅How to use Swing Timers 了解一种可能的解决方案
-
@OhleC(字符串测试在类中是静态的)
public static void main(String[] args) throws Exception{ JFrame frame = new JFrame("Wong & Irwin Are Cool"); ISU panel = new ISU(); frame.add(panel); frame.setResizable (false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocation(350, 50); frame.pack(); frame.setVisible(true); JLabel testing = new JLabel (test, JLabel.CENTER); testing.setAlignmentX(0); testing.setAlignmentY(0); frame.add(testing); Thread.sleep(2000); testing.setVisible(false); test = "hi"; testing.setText(test); -
@OhleC 哎呀,结果不太好。我希望你能好好读。 ISU 是类名
-
@OhleC
public ISU() { setPreferredSize(new Dimension (600, 600)); }
标签: java swing graphics jframe jlabel