-3

私は2つのクラスを持っています、

私のメイン クラスはフレームを作成し、別のクラスにコンテンツを追加したいと考えています。少し読んだところ、コンポーネントを使用してこれを行う必要があることがわかりましたが、コードを実行するとフレームが空になります。

 public static void main(String[] args)
 {
    // create frame
    JFrame frame = new JFrame();
    final int FRAME_WIDTH = 800;
    final int FRAME_HEIGHT = 600;
    // set frame attributes
    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
    frame.setTitle("My Frame");
    frame.setVisible(true);

    Component1 Com = new Component1();
    Component add = frame.add(Com);

}

私のComponentクラスはJLabelを作成します

public class Component1 extends JComponent {

   public void paintComponent()
   {
       JLabel label = new JLabel("<html>Some Text</html>");
   }
}

コンパイル エラーは発生しませんが、JFrame にテキストが表示されません。

誰かが私が間違っていることを説明できますか?

クリス

4

2 に答える 2

5

を追加する必要がありJLabelます。また、デフォルトのレイアウトマネージャーがあり、コンポーネントサイズを設定しなくても、追加されたコンポーネントが表示されるため、JPanel拡張する方が適切です。ところで、カスタムペイントに使用されます。JComponentpaintComponent

public class Component1 extends JPanel {

   Component1() {
      JLabel label = new JLabel("<html>Some Text</html>");
      add(label);
   }
}
于 2012-12-10T20:08:30.370 に答える
4

新しいを作成する必要はありませんComponent。だけお電話frame.getContentPane().add(label)ください。そして、この前にラベルを初期化します。

于 2012-12-10T20:10:47.793 に答える