JButtonのサイズを変更することができません。
質問
私は、他の2つのように同じ大きさになったに3つ目のボタンのサイズを変更し、一番下にそれを置く方法とこだわってます。
class ControlFrame extends JFrame
implements Runnable
{
JButton jb_inc = new JButton();
JButton jb_zero = new JButton();
JButton jb_dec = new JButton();
ControlFrame() {
super("Control Frame");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
ControlFrame(int x,int y, int w, int h) {
this();
this.setBounds(x, y, w, h);
this.setVisible(true);
jb_inc.setBounds(10,10,90,20);
jb_zero.setBounds(10,40,90,20);
jb_dec.setBounds(10,60,90,20);
jb_inc.setVisible(true);
jb_zero.setVisible(true);
jb_dec.setVisible(true);
this.getContentPane().add(jb_inc);
this.getContentPane().add(jb_zero);
this.getContentPane().add(jb_dec);
}
public void run() {
}
}
public class Counting_Machine
{
public static void main(String[] args) {
ControlFrame cf = new ControlFrame(0,200,80,150);
}
}
解決
二つの提案ます:
1)は、インスタンス初期化ブロックに共通するものを入れます。個人的に私身震い私は「この()」の呼び出しを見るたびに。
{ this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)。 }
ControlFrame() { スーパー(「制御フレーム」)。 }
ControlFrame(int型のx、int型Y、W INT、INT H) { スーパー(「制御フレーム」)。 ... }
2)Iは、xを取り除くであろう、W、Y、Hコンストラクタ...個人的に私は、画面のサイズアウト図面およびへ渡された値を使用することを「位置」メソッドを有するクラスと呼ばれるWindowUtilsを有します画面の相対的なサイズであるウィンドウを作成します。その後、ウィンドウを作成するコードはそれを呼び出します。私は(0または1であることが非常に頻繁に、私はめったに二つ以上を持っている)可能な限り少数のコンストラクタとして持っていることを好むます。
3)this.getContentPane()jb_inc(ADD)。今アドオン(jb_inc)のように書くことができます。 - JDK 1.5以来、私は思う。
。4)(あなたがこれを持っているすべてのものをoverrideableメソッドを呼び出すことはありません。前に)コンストラクタの内部。サブクラスがオーバーライドし、「追加」した場合、あなたは物事の休憩を見ることができました。あなたは)(super.addを呼び出し、または別の方法で追加したり、あなたのクラスは、最終的な作ります。
を行うことができますので、さて、あなたの質問に答えるために...: - )
あなたは LayoutManagersするを利用するために必要あなたが欲しいものを手に入れます。
あなたはおそらく、あなたは下のボタンを得ることができるので、BorderLayoutのを使用したい。
欲しいものに応じて、他のヒント
私はあなたがにSwingのチュートリアルからのセクションを読むことから始め示唆しますあなたはどの動作しませんのBorderLayoutの「中央」に3つのコンポーネントを追加しようとしているので、レイアウトマネージャを使用すると、あなたのコードは動作しませんを。より良いあなたのニーズを満たしていることのLayoutManagerを選択します。
レイアウトマネージャを使用する場合にsetBounds(...)メソッドを使用する必要はありません。レイアウトマネージャの仕事は、構成要素がレイアウトマネージャのルールに基づいた位置です。各ボタンの推奨サイズは、あなたがボタンに任意のテキストを追加していないので、同じである必要があります。
また、ボタン上のsetVisible()呼び出すことが必要とされない、すべてのSwingコンポーネントは、トップレベルコンテナ(JFrameの、JDialogの)を除いて、デフォルトで表示されます。
は、すべてのあなたのしている設定の境界ので、あなたは全くのLayoutManagerを必要としません。あなたはあなたの例であるとして、あなたは、すべてのものを自分で配置することができ、nullにあなたのLayoutManagerを設定します。
this.setLayoutManager(null)