Label中的文本无法使用setText方法正确显示

时间:2009-11-21 15:57:17

标签: java label settext

我试图通过在单击按钮时调用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上,字符串按预期显示,但是,在调整窗口大小之前,它们会被遮挡。我错过了什么?

3 个答案:

答案 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