2

Java Swing を勉強していますが、次の単純なコードに問題があります。

package com.techub.exeute;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;


public class Main{

    public static void main(String[] args) {

        JFrame frame = new JFrame("FrameDemo");
        frame.setMinimumSize(new Dimension(800, 400));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       

        JLabel myLabel = new JLabel("Hello World !!!", SwingConstants.CENTER);
        myLabel.setFont(new Font("Serif", Font.BOLD, 22));
        myLabel.setBackground(Color.blue);
        myLabel.setOpaque(true);
        myLabel.setPreferredSize(new Dimension(100, 80));

        frame.getContentPane().add(myLabel, BorderLayout.NORTH);

    }
}

私の考えは、JFrameオブジェクトを作成し、Hello World JLabelオブジェクトをいくつかのプロパティに設定することです。

私はそれをmain()メソッドに入れます。問題は、プログラムを実行しても何も表示されないことです!!! なんで?私のコードで何が間違っていますか?

TNX

アンドレア

4

4 に答える 4

11

フレームを作成していますが、表示していません。電話

frame.setVisible(true);

表示します。

もう 1 つ: メイン スレッドで GUI コンポーネントを操作しないでください。代わりに、フレームを作成してコンポーネントをセットアップするための新しいメソッドを作成し、公式チュートリアルの例のように、イベント ディスパッチ スレッドでそのメソッドを実行します。

import javax.swing.*;        

public class HelloWorldSwing {
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JLabel label = new JLabel("Hello World");
        frame.getContentPane().add(label);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
于 2013-09-24T09:58:31.953 に答える
2

あなたには必要だ

frame.setVisible(true);

コードを呼び出します。

Thread他の人が述べたように、GUI操作にメインを使用しないでください。SWINGの公式チュートリアルを参照することをお勧めします。それらはかなり役に立ち、適切なスレッド化の例がそこに表示されます。

于 2013-09-24T10:02:30.510 に答える
2

この行をメソッドに保持します

frame.setVisible(true);
于 2013-09-24T10:02:44.830 に答える