자바에서 버튼의 위치와 크기 설정

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, 하나는 요소에 대한 것이고 다른 하나는 하단에있는 두 개의 시리즈에 대한 것입니다. JPanels요소의 빈 부분을 채우 려면 더미를 사용해야 합니다 GridLayout.

대신에 요소 약어, 요소 이름, 원자 번호 및 원자 무게를 유지 JButtons하는 모델 JPanel을 만드는 것이 좋습니다 . JPanel각 요소 에 대한 모델의 인스턴스를 만듭니다 .

모델을 사용하면 JPanels배경을 더 쉽게 채색 할 수 있습니다.