Java Zwei Plätze für einen Button in einem GridLayout verwenden

Tockra

Lt. Commander
Registriert
Dez. 2008
Beiträge
1.063
Hallo Leute,

Ich würde gerne einen Taschenrechner in Java programmieren.
Um den Rechner grafisch umzusetzen, habe ich ein Borderlayout in ein Frame gesetzt. Im Norden des Layouts kommt ein Gridlayout mit 3 Plätzen hin, in dessen 2ten Platz ein Textfeld kommt.
Im Center des Borderlayouts kommt ein Gridlayout, mit 5x5 Zeilen.
Nun würde ich gerne, dass die Null den nicht benannten Button (siehe Screen) mit benutzen und so länglich ist wie beim Windows rechner.
Das selbe soll beim Gleich passieren.
Hier mal ein Bild:
Siehe Anhang
 

Anhänge

  • facharbeit2.png
    facharbeit2.png
    24,4 KB · Aufrufe: 229
Du setzt die "0" auf 0:4 und gibst ihr in den gridbag Constraints eine x Ausdehnung (gridwidth) von 2.
 
Viel einfacher sind solche Layouts übrigens mit MigLayout umzusetzen. Erfordert am Anfang natürlich einige Einarbeitung. Lohnt sich allerdings auf lange Sicht. MigLayout unterstützt auch SWT und JavaFX!
 
Das muss ja nicht so bleiben :D Wenn Du länger mit Java zu tun hast, wirst Du ohnehin nicht darum herum kommen, Dich mit dem Klassenpfad zu beschäftigen.

Hier mal ein wenig Layout-Code mit MigLayout:

Code:
import java.awt.Component;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import net.miginfocom.swing.MigLayout;


public class Calc
{
    public static void main(final String... rArgs)
    {
        SwingUtilities.invokeLater(new Runnable()
            {
                public void run()
                {
                    new Calc().show();
                }
            });
    }


    private Component createMainPane()
    {
        JPanel panel = new JPanel(new MigLayout("insets 0, fill, gap 0"));

        panel.add(new JButton("Hey"), "spanx 5, growx");
        panel.add(new JPanel(), "newline, spanx 5, grow, push, hmin 30");

        panel.add(new JButton("ln"), "newline, grow, push");
        panel.add(new JButton("x\u00B2"), "grow, push");
        panel.add(new JButton("C"), "grow, push");
        panel.add(new JButton("del"), "grow, push");
        panel.add(new JButton("Pi"), "grow, push");

        panel.add(new JButton("7"), "newline, grow, push");
        panel.add(new JButton("8"), "grow, push");
        panel.add(new JButton("9"), "grow, push");
        panel.add(new JButton("/"), "grow, push");
        panel.add(new JButton("\u2211x"), "grow, push");

        panel.add(new JButton("4"), "newline, grow, push");
        panel.add(new JButton("5"), "grow, push");
        panel.add(new JButton("6"), "grow, push");
        panel.add(new JButton("*"), "grow, push");
        panel.add(new JButton("\u221Ax"), "grow, push");

        panel.add(new JButton("1"), "newline, grow, push");
        panel.add(new JButton("2"), "grow, push");
        panel.add(new JButton("3"), "grow, push");
        panel.add(new JButton("-"), "grow, push");
        panel.add(new JButton("="), "grow, push, spany 2");

        panel.add(new JButton("0"), "newline, grow, push, spanx 2");
        panel.add(new JButton(","), "grow, push");
        panel.add(new JButton("+"), "grow, push");

        return panel;
    }


    private void show()
    {
        JFrame frame = new JFrame("Calculator");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(createMainPane());
        frame.setSize(250, 350);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
 
Zurück
Oben