/ / Wie bekomme ich das NumPad-Layout - Java, Swing, Applet, Japplet?

Wie man das NumPad Layout bekommt - Java, Swing, Applet, Japplet

Ich brauche das Layout für das Nummernfeld auf der Tastatur. Ich habe das meiste davon, das einzige Problem, das ich habe, ist, dass der "Enter" -Button ganz unten sein soll. Aber wenn ich das Panel p4 verwende und es auf SÜDEN stelle, erreicht der "Enter" -Knopf nicht den Boden. Hier ist der Code.

So sieht es aus

Bildbeschreibung hier eingeben

Das wollte ich

Bildbeschreibung hier eingeben

public class NumPad extends Applet
{
public void init() {
setLayout(new BorderLayout());

Panel p1 = new Panel();
p1.setLayout(new GridLayout(1, 0));
p1.add(new Button("Num"));
p1.add(new Button("/"));
p1.add(new Button("*"));
p1.add(new Button("-"));
add(p1, BorderLayout.NORTH);

Panel p2 = new Panel();
p2.setLayout(new GridLayout(3, 0));
p2.add(new Button("7"));
p2.add(new Button("8"));
p2.add(new Button("9"));
p2.add(new Button("4"));
p2.add(new Button("5"));
p2.add(new Button("6"));
p2.add(new Button("1"));
p2.add(new Button("2"));
p2.add(new Button("3"));
add(p2, BorderLayout.CENTER);

Panel p4 = new Panel();
p4.setLayout(new GridLayout(1, 0, 30, 40));
p4.add(new Button("0"));
p4.add(new Button("."));
add(p4, BorderLayout.SOUTH);

Panel p3 = new Panel();
p3.setLayout(new GridLayout(2, 0));
p3.add(new Button("+"));
p3.add(new Button("Enter"));
add(p3, BorderLayout.EAST);
}
}

Antworten:

1 für die Antwort № 1

Sie müssen nicht alles neu arrangieren, Sie können einfach nisten p2 und p4 in eine andere JPanel und füge das neue Panel in der Mitte hinzu. Solange Sie nichts hinzufügen SOUTH Von der "Haupt" -Anzeige aus können Sie loslegen.

Übrigens, verwenden Sie keine awt-Komponenten, sondern greifen Sie direkt zu den Swing-Komponenten. Dies spart Ihnen viel Zeit und vermeidet störende Verhaltensweisen JApplet Anstatt von Applet)

Sehen Sie sich dieses kleine Beispiel an:

import java.awt.BorderLayout;
import java.awt.GridLayout;

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

public class NumPad extends JPanel {
public NumPad() {
setLayout(new BorderLayout());

JPanel top = new JPanel(new GridLayout(1, 0));
top.add(new JButton("Num"));
top.add(new JButton("/"));
top.add(new JButton("*"));
top.add(new JButton("-"));
add(top, BorderLayout.NORTH);
JPanel p2p4 = new JPanel(new BorderLayout());
JPanel p2 = new JPanel(new GridLayout(3, 0));
p2.add(new JButton("7"));
p2.add(new JButton("8"));
p2.add(new JButton("9"));
p2.add(new JButton("4"));
p2.add(new JButton("5"));
p2.add(new JButton("6"));
p2.add(new JButton("1"));
p2.add(new JButton("2"));
p2.add(new JButton("3"));
p2p4.add(p2, BorderLayout.CENTER);

JPanel p4 = new JPanel();
p4.setLayout(new GridLayout(1, 0, 30, 40));
p4.add(new JButton("0"));
p4.add(new JButton("."));
p2p4.add(p4, BorderLayout.SOUTH);
add(p2p4);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(2, 0));
p3.add(new JButton("+"));
p3.add(new JButton("Enter"));
add(p3, BorderLayout.EAST);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame(NumPad.class.getSimpleName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
NumPad numPad = new NumPad();
frame.add(numPad);
frame.pack();
frame.setVisible(true);
}
});
}
}

0 für die Antwort № 2

So funktioniert BorderLayout. BorderLayout.EAST reicht nicht nach unten.

Bildbeschreibung hier eingeben

Probieren Sie eine anderer layout manager Oder ordnen Sie Ihre Komponenten anders an. Siehe dieses Beispiel:

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());

setLayout(new BorderLayout());

Panel p1 = new Panel();
p1.setLayout(new GridLayout(1, 0));
p1.add(new Button("Num"));
p1.add(new Button("/"));
p1.add(new Button("*"));
panel.add(p1, BorderLayout.NORTH);

Panel p2 = new Panel();
p2.setLayout(new GridLayout(3, 0));
p2.add(new Button("7"));
p2.add(new Button("8"));
p2.add(new Button("9"));
p2.add(new Button("4"));
p2.add(new Button("5"));
p2.add(new Button("6"));
p2.add(new Button("1"));
p2.add(new Button("2"));
p2.add(new Button("3"));
panel.add(p2, BorderLayout.CENTER);

Panel p4 = new Panel();
p4.setLayout(new GridLayout(1, 0, 30, 40));
p4.add(new Button("0"));
p4.add(new Button("."));
panel.add(p4, BorderLayout.SOUTH);

Panel p3 = new Panel();
p3.setLayout(new GridLayout(3, 0));
p3.add(new Button("-"));
p3.add(new Button("+"));
p3.add(new Button("Enter"));

add(panel, BorderLayout.CENTER);
add(p3, BorderLayout.EAST);