Javaでボタンの位置とサイズを設定する

Nov 14 2020

私はプロジェクト(周期表)を作成していますが、SwingとGridBagLayoutに少し問題があります。つまり、少し大きなボタンを取得したい場合、何も変更されないか、画面全体を占めるボタンが表示されます。どうして?どうすれば少し大きくできますか?また、ボタンを中央に配置しないように設定するにはどうすればよいですか?私のコード(私はSwingとGridBagLayoutを使用しています):

    GridBagConstraints c = new GridBagConstraints();
    JButton H,He,Li,Be,B,C,N,O,F,Ne;
    public MyPanel() {
        setPreferredSize(new Dimension(500,500));
        setBackground(Color.GREEN);
        setLayout(new GridBagLayout());
        //Wodór
        H=new JButton("H");
        c.anchor=GridBagConstraints.FIRST_LINE_START;
        c.weightx=1;
        c.weighty=1;
        c.gridwidth=2;
        c.gridheight=2;
        c.gridx=0;
        c.gridy=0;
        add(H,c);
        //Hel
        He=new JButton("He");
        c.anchor=GridBagConstraints.FIRST_LINE_END;
        c.gridx=34;
        add(He,c);
        //Lit
        Li=new JButton("Li");
        c.weighty=0;
        c.gridx=0;
        c.gridy=2;
        add(Li,c);
        //Beryl
        Be=new JButton("Be");
        c.gridx=2;
        add(Be,c);
        //Bar
        B=new JButton("B");
        c.gridx=24;
        add(B,c);
        //Węgiel
        C=new JButton("C");
        c.gridx=26;
        add(C,c);
        //Azot
        N=new JButton("N");
        c.gridx=28;
        add(N,c);
        //Tlen
        O=new JButton("O");
        c.gridx=30;
        add(O,c);
        //Fluor
        F=new JButton("F");
        c.gridx=32;
        add(F,c);
        //Neon
        Ne=new JButton("Ne");
        c.gridx=34;
        add(Ne,c);
    }
}

回答

1 GilbertLeBlanc Nov 14 2020 at 19:03

これがDuckDuckGoから入手した周期表の写真です。

表を見ると、GridLayouts下部にある要素用と2つのシリーズ用の2つをお勧めします。JPanels要素の空の部分を埋めるには、ダミーを使用する必要がありますGridLayout。

また、の代わりにJButtons、JPanel要素の略語、要素名、原子番号、および原子量を保持するモデルを作成することをお勧めします。JPanel各要素のモデルのインスタンスを作成します。

モデルを使用JPanelsすることで、背景に簡単に色を付けることができます。