ボタンがクリックされるたびに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");
}
}
}
引数なしで2つのLabelオブジェクトを初期化すると、ウィンドウをクリックしてドラッグしてサイズを変更するまで、送信ボタンをクリックしたときにsetTextメソッドに渡された文字列「12」と「31」が画面に表示されません。それ。私はこれにMacでのみ気づきました。PCでは、文字列は表示されますが、ウィンドウのサイズを変更するまで表示されません。ただし、次のようにラベルを初期化すると、次のようになります。
static Label month = new Label("0");
static Label day = new Label("0");
Macでは、文字列は意図したとおりに表示されますが、ウィンドウのサイズが変更されるまで文字列は隠されます。私は何が欠けていますか?