我试图动态地通过调用每当一个按钮被点击的的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上,琴弦出现如预期,但他们掩盖,直到窗口大小。我缺少什么?

有帮助吗?

解决方案

如所提到这里 解决了这个问题上调用帧的validate()。

其他提示

尝试重新油漆帧或/和设置足够的空间(有必要对setPreferredSize,setMininumSize)

好了,大部分的帖子都一岁多,所以我就给你往好处想。我从来没有使用AWT,所以我不知道问题是什么,但我会建议:

1)正确写出你的类。 “日期”已经在JDK的类。选择一个更好的名字。

2)尝试使用代替AWT Swing组件。

3)从你的类摆脱静态变量。

4)摆脱的WindowListener的关闭帧。

在这里张贴的代码示例为10-15岁。尝试新的东西。先从的摆动更近的例子教程

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top