Ich habe eine Zuordnung, und die Anweisungen angeben, dass ich zwei Beschriftungen auf dem Bildschirm (horizontal und vertikal) zentriert werden müssen.
Ich weiß, dass diese Frage schon oft gestellt wurde, aber wenn ich nach dieser Frage gesucht habe, ist die Lösung oft, einen anderen Layout-Manager zu verwenden, wie BoxLayout. Die Anweisungen geben jedoch auch an, dass ich BorderLayout verwenden muss.
Ursprünglich habe ich die Beschriftungen nicht zu einem Panel hinzugefügt und stattdessen direkt in den Rahmen eingefügt, aber das hat nicht funktioniert, daher wurde mir geraten, beide auf eine JPanel zu setzen, was auch nicht funktioniert hat.Java Swing - Center ein JLabel mit BorderLayout
Mein Code sieht wie folgt zur Zeit:
JButton butSubmit = new JButton("Submit");
JButton butReset = new JButton("Reset");
JLabel nameAndReg = new JLabel("My details", SwingConstants.CENTER);
JLabel errorMsg = new JLabel("The error message", SwingConstants.CENTER);
nameAndReg.setForeground(Color.blue);
JTextField redVal = new JTextField(3);
JTextField greenVal = new JTextField(3);
JTextField blueVal = new JTextField(3);
JPanel butPanelSouth = new JPanel();
JPanel butPanelNorth = new JPanel();
JPanel labsPanel = new JPanel();
butPanelSouth.add(redVal);
butPanelSouth.add(greenVal);
butPanelSouth.add(blueVal);
butPanelSouth.add(butSubmit);
butPanelNorth.add(butReset);
labsPanel.add(nameAndReg, BorderLayout.CENTER);
labsPanel.add(errorMsg, BorderLayout.CENTER);
add(labsPanel, BorderLayout.CENTER);
add(butPanelNorth, BorderLayout.NORTH);
add(butPanelSouth, BorderLayout.SOUTH);
Und das ist, was sie produziert:
Wie kann ich ‚Meine Details‘ und ‚Die Fehlermeldung‘ sein vertikal und horizontal erhalten in die Mitte des Fensters, eine unter der anderen, und immer noch BorderLayout?
Edit: Sorry, ich merke, dass ich nicht sehr klar war. Der Ratschlag, den ich erhielt, war: "Verschachteln Sie vielleicht Ihre Layout-Manager, also legen Sie ein JPanel in die Mitte eines BorderLayouts auf einem JFrame."
Nehmen Sie an, dass Ihr JLabel wegen des Textes nicht in der Mitte ist? Sie können die Hintergrundfarbe Ihres JLabel ändern und sehen, wo sich das gesamte JLabel zuerst befindet. Es könnte bereits in der Mitte sein, wenn Sie bereits alle Ansätze ausprobiert haben. – user3437460
Alle Ihre Panels ** müssen ** BorderLayout verwenden (es wäre verrückt ...), oder Sie können verschachtelte Panels mit verschiedenen 'LayoutManagern' verwenden?Jetzt verwenden Sie 'FlowLayout' für Ihre Sub-Panels (wenn Sie kein Layout an den 'JPanel'-Konstruktor übergeben, wird' FlowLayout' verwendet) – Ansharja
Eigentlich, jetzt, wo ich neu lese, was mir geraten wurde, es zu tun sagt 'vielleicht schachteln Sie Ihre Layout-Manager, dh legen Sie ein JPanel in die Mitte eines BorderLayout auf einem JFrame.' – electricbl00