我试图通过在单击按钮时调用setText方法动态设置标签中的文本。这是我的代码:
import java.awt.*;
import java.awt.event.*;
class Date {
public static void main(String[] args) {
new MainWindow();
}
}
class MainWindow {
static Label month = new Label();
static Label day = new Label();
static Button submit = new Button("Submit");
MainWindow() {
Frame myFrame = new Frame("Date Window");
myFrame.setLayout(new FlowLayout());
myFrame.add(month);
myFrame.add(day);
myFrame.add(submit);
submit.addActionListener(new ButtonListener());
myFrame.addWindowListener(new WindowListener());
myFrame.setSize(200, 200);
myFrame.setVisible(true);
}
}
class WindowListener extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
if (event.getSource() == MainWindow.submit) {
MainWindow.month.setText("12");
MainWindow.day.setText("31");
}
}
}
当我初始化没有任何参数的两个Label对象时,单击提交按钮直到我单击窗口并且在屏幕上看不到传递给setText方法的字符串“12”和“31”拖动以调整大小。我只在Mac上注意到了这一点。在PC上,字符串是可见的,但在我调整窗口大小之前会被遮挡。但是,如果我像这样初始化标签:
static Label month = new Label("0");
static Label day = new Label("0");
在Mac上,字符串按预期显示,但是,在调整窗口大小之前,它们会被遮挡。我错过了什么?
答案 0 :(得分:2)
如上所述here在Frame上调用validate()解决了问题。
答案 1 :(得分:0)
尝试重新绘制框架或/并设置足够的空间(setPreferredSize,setMininumSize)
答案 2 :(得分:0)
嗯,你的大部分帖子已经超过一年了,所以我会给你怀疑的好处。我从不使用AWT所以我不知道问题是什么,但我会建议:
1)正确地命名你的课程。 “Date”已经是JDK中的一个类。选择一个更好的名字。
2)尝试使用Swing组件而不是AWT。
3)摆脱你班级的静态变量。
4)摆脱WindowListener以关闭框架。
您在此处发布的代码示例为10-15岁。尝试更新的东西。从最近的示例开始Swing tutorial。