ラベルのテキストはのsetTextメソッドで正しく表示されません

StackOverflow https://stackoverflow.com/questions/1775858

  •  21-09-2019
  •  | 
  •  

質問

私は、ボタンがクリックされるたびの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");
        } 
    }
}
私はSetTextメソッドに渡される引数、文字列「12」と「31」せずに2つのLabelオブジェクトを初期化し送信ボタンがクリックされたときに画面に表示されていない場合は、

私はウィンドウをクリックするまでサイズを変更するドラッグします。私は、Mac上でこれを気づきました。 PC上で、文字列が表示されますが、私は、ウィンドウのサイズを変更するまで隠されています。しかし、私はこのようなラベルを初期化する場合:

    static Label month = new Label("0");
    static Label day = new Label("0");
意図したとおりに

Macでは、文字列が表示され、しかし、それらはウィンドウのサイズが変更されるまで隠されています。私は何をしないのですか?

役に立ちましたか?

解決

ここにhref="https://stackoverflow.com/questions/369823/java-gui-repaint-problem-solved"> の問題を解決しました。

他のヒント

フレームまたは/およびセットに十分なスペースを塗り替えてみ(setPreferredSize、setMininumSize)

私はあなたに疑いの利益をあげるように、

さて、あなたの投稿のほとんどは、古い年を超えています。私は問題が何であるかを知らないので、私はAWTを使用することはありませんが、私はお勧めします:

1)適切にあなたのクラスに名前を付けます。 「日」とは、すでにJDKでクラスです。より良い名前を選択します。

2)の代わりにAWTのSwingコンポーネントを使用してみます。

3)は、あなたのクラスから静的変数を取り除きます。

4)フレームを閉じるためのWindowListenerを取り除くます。

あなたはここに掲載のコード例では、10〜15歳です。新しい何かを試してみてください。もっと最近の例については、チュートリアルのスイングを開始します。

scroll top