Festlegen einer Position und Größe für Schaltflächen in Java

Nov 14 2020

Ich mache ein Projekt (Periodensystem) und habe ein kleines Problem mit Swing und GridBagLayout, dh wenn ich etwas größere Schaltflächen erhalten möchte, ändert sich nichts oder ich erhalte Schaltflächen, die meinen gesamten Bildschirm einnehmen. Warum? Wie kann ich es etwas größer machen? Und wie kann ich die Tasten so einstellen, dass sie NICHT in der Mitte sind? Mein Code (ich verwende Swing und 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);
    }
}

Antworten

1 GilbertLeBlanc Nov 14 2020 at 19:03

Hier ist ein Bild des Periodensystems, das ich von DuckDuckGo bekommen habe.

Wenn ich mir die Tabelle anschaue, würde ich zwei vorschlagen GridLayouts, eine für die Elemente und eine für die beiden Serien unten. Sie müssten Dummy verwenden JPanels, um den leeren Teil der Elemente auszufüllen GridLayout.

Ich würde auch vorschlagen, dass Sie stattdessen JButtonsein Modell erstellen JPanel, das die Elementabkürzung, den Elementnamen, die Ordnungszahl und das Atomgewicht enthält. Sie würden JPanelfür jedes Element eine Instanz des Modells erstellen .

Mit dem Modell JPanelskönnen Sie den Hintergrund einfacher einfärben.