Frage

Ich möchte den Inhalt eines GroupLayout im Java-Applet zentrieren.Nach langer Recherche kann ich immer noch nicht herausfinden, wie es geht.

Der folgende Code zeigt mein Applet.Alle Elemente sind auf das Layout zentriert, aber das Layout ist nicht auf das Applet zentriert.

JPanel cp=new JPanel();

String[] s = new String[2];
s[0] = "Price";
s[1] = "Name";

JComboBox c = new JComboBox(s);

JProgressBar pb=new JProgressBar(17, 23);
pb.setValue(20);
pb.setStringPainted(true);

JLabel l=new JLabel("Name of product");

JButton b=new JButton("Send a message");
b.setEnabled(true);

cp.add(c);
cp.add(pb);
cp.add(l);
cp.add(b);

GroupLayout layout = new GroupLayout(cp);
cp.setLayout(layout);

layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);

layout.setHorizontalGroup(
   layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
           .addComponent(c,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
           .addComponent(pb,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
           .addComponent(l,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
           .addComponent(b,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE))
);
layout.setVerticalGroup(
   layout.createSequentialGroup()
      .addComponent(c,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
      .addComponent(pb,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
      .addComponent(l,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
      .addComponent(b,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE,
                        GroupLayout.PREFERRED_SIZE)
);

Ich werde mich über jede Hilfe freuen.

War es hilfreich?

Lösung

Die wichtigen Zeilen sind:

        Container cont = getContentPane();
        cont.setLayout(new GridBagLayout());
        add(cp);

Screenshot

Applet GUI

SSCCE

Der 'vollständige' 79-Zeilencode lautet:

//<applet code='TestApplet' width='250' height='250'></applet>
import java.awt.*;
import javax.swing.*;

public class TestApplet extends JApplet {

    public void init() {
        JPanel cp=new JPanel();

        Container cont = getContentPane();
        cont.setLayout(new GridBagLayout());
        add(cp);

        String[] s = new String[2];
        s[0] = "Price";
        s[1] = "Name";

        JComboBox c = new JComboBox(s);

        JProgressBar pb=new JProgressBar(17, 23);
        pb.setValue(20);
        pb.setStringPainted(true);

        JLabel l=new JLabel("Name of product");

        JButton b=new JButton("Send a message");
        b.setEnabled(true);

        cp.add(c);
        cp.add(pb);
        cp.add(l);
        cp.add(b);

        GroupLayout layout = new GroupLayout(cp);
        cp.setLayout(layout);

        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);

        layout.setHorizontalGroup(
           layout.createSequentialGroup()
              .addGroup(layout.createParallelGroup(
                  GroupLayout.Alignment.CENTER)
                   .addComponent(c,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
                   .addComponent(pb,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
                   .addComponent(l,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
                   .addComponent(b,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE))
        );
        layout.setVerticalGroup(
           layout.createSequentialGroup()
              .addComponent(c,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
              .addComponent(pb,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
              .addComponent(l,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
              .addComponent(b,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.PREFERRED_SIZE)
        );
    }
}

Andere Tipps

Sie können vertikale und horizontale Klebeelemente aus der Box-Fabrik erstellen und diese an den Seiten Ihres Layouts hinzufügen.Wenn das Layout festgelegt ist, dehnt sich der Kleber aus und drückt den Rest des Layouts in die Mitte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top