1

私はJSwingを初めて使用するので、本当に初心者の質問を許してください。

トップレベルコンテナの使用方法に関するチュートリアルを読んだ後、ボタンのactionPerformedイベント内で次のコードを試しました。

private void colgarActionListener(java.awt.event.ActionEvent evt) {

        auxButton = new JButton();
        auxButton.setSize(100,30);
        auxButton.setText("Me button");
        getContentPane().add(auxButton);
        getContentPane().doLayout();


}

ご想像のとおり、動作しない場合があります。ボタンが表示されないだけです。私が次のようなばかげたことをしようとすると:

getContentPane().setBackground(Color.red);

それ以外の

getContentPane().doLayout();

できます。私は何が間違っているのですか?

そして最後の1つ:カスタムActionListenerとして機能するクラス(パラメーターを持つコンストラクターを含む)を作成する場合、どこに配置する必要がありますか?GUIコード内のプライベートクラスとして?それはとても汚い感じです...または別のパッケージ内のパブリッククラスとして。多分?

どうもありがとうございます。

よろしく。

マルティン。

4

2 に答える 2

3

レイアウトマネージャーがどのように機能するか、そしてそのためにそれらをどのように使用するかを読みたいと思うでしょう。それはSwingを使用するための鍵の1つです(ちなみにJSwingではありません)。レイアウトマネージャーチュートリアルは、始めるのに最適な場所です。

1つは、nullレイアウトの使用を避け、setBounds(...)もう1つは、contentPaneは通常BorderLayoutを使用します。また、私はこれまでdoLayout()このように使用されたのを見たことがありません。代わりに、私は通常、コンポーネントを変更した後、コンテナを参照または呼び出しましたvalidate()revalidate()repaint()

于 2012-04-11T13:42:03.353 に答える
1

はい、ActionListenerは通常、プライベートクラスとしてだけでなく、匿名クラスとして、正確に使用サイトに実装されます。匿名クラスはあなたが書くときです

x.addActionListener(new ActionListener() { public void actionPerformed(Event e) {
   ... stuff to do ...
}});
于 2012-04-11T13:48:24.737 に答える