3

GUIを作成していますが、問題を解決する方法がわかりません。私がやりたいのは、Mainで行ったように、PanelClassからいくつかのパネルを作成することです。

方法がわかりません:

  1. パネルのボタンに名前を付け、いくつかの機能を提供しました(ボタンb1で試していたように)
  2. panel3に追加のラベルとボタンを追加します。

私のメインクラス

public class Main {

    JFrame f;
    PanelClass panel1, panel2, panel3;
    JButton b1, b2;

    public Main() {

        b1 = new JButton("asasa");

        f = new JFrame();
        f.setSize(300, 300);
        f.setLayout(new GridBagLayout());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel1 = new PanelClass(b1, b2, panel1);
        panel2 = new PanelClass(b1, b2, panel2);
        panel3 = new PanelClass(b1, b2, panel3);

        f.add(panel1);
        f.add(panel2);
        f.add(panel3);
    }

    public static void main(String[] args) {    
        Main m = new Main();    
    }    
}

私のパネルクラス

public class PanelClass extends JPanel {

    public PanelClass(JButton btn, JButton btn1, JPanel p) {

        super();
        p = new JPanel(new GridBagLayout());
        btn = new JButton();
        btn1 = new JButton();

        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 0;
        c.gridy = 0;
        p.add(btn, c);
        c.gridx = 0;
        c.gridy = 1;
        p.add(btn1, c);
        add(p);
    }
}
4

3 に答える 3

5
  1. コンポーネントは、一度に1つの表示可能なコンテナにのみ存在できます(フライウェイトレンダラーとして使用されている場合を除く)。したがって、同じボタンを3つのパネルに配置しても機能しません。
  2. コードは、コンストラクター内のボタンを渡しますが、そのボタンPanelClassは無視されます。代わりに、2つの新しいボタンインスタンスが作成されます。渡されたボタンを..私がそうではないことに気付いたときに「クラスレベルの属性」と言うつもりでした。完全に削除する btn = new JButton();と、ボタンコンストラクターに渡されたテキストが表示されます。
  3. イベントについては、アクションリスナーの作成方法を参照してください。
于 2012-10-16T14:50:16.110 に答える
0

公式のSwingチュートリアルを読んでみてください。パネルやラベルなどを追加する方法を説明しています。

ラベル名を編集するには、メソッドを使用できますsetText(String name)。ボタンに機能を追加するには、各ボタンにリスナーを実装する必要があります。他のパネルと同じようにラベルを追加しますが、問題はありません。

于 2012-10-16T13:58:48.500 に答える
0

クリックやマウスホバーなどの「イベント」を追加するには、ウィジェットに正しい「リスナー」を実装する必要があります。Swingに関する優れたチュートリアルを実行すると、Swingに関するすべてがわかります。画面上のウィジェットも通常のオブジェクトであるため、通常のオブジェクトと同様に、「コレクション」に追加したり、繰り返したり、遊んだりすることができます。THREADの複雑さと警告「クロススレッドの呼び出しはプログラムに有害です」に注意してください。

于 2012-10-16T14:40:12.380 に答える