Problema nell'impostazione del layout
-
28-10-2019 - |
Domanda
Ho fatto un JFrame
e all'interno di quel telaio, c'è un pannello su cui ho posizionato vari contenitori usando GridBagLayout
. Ho impostato il layout di JFrame
essere BorderLayout
, e ha aggiunto il pannello in BorderLayout.WEST
. Voglio mostrare i container di quel pannello nell'angolo in alto a sinistra. Come lo posso fare?
Anche se provo ad aggiungere pannello a BorderLayout.NORTH
allora viene anche visualizzato al centro superiore ma invece Voglio essere nell'angolo in alto a sinistra.
C'è un modo per farlo? Cioè qualsiasi altro layout che dovrei usare come voglio mostrare
label1
button1 button2 button3
label2
button1 button2 button3
label 3
button1 button2 button3
Soluzione
Questo è facile da fare con solo GridLayout
e BorderLayout
.
import java.awt.*;
import javax.swing.*;
class LabelButtonLayout {
public static Component getButtonLayout(int num) {
JPanel p = new JPanel(new BorderLayout(3,3));
p.add(new JLabel("Label " + num), BorderLayout.NORTH);
JPanel b = new JPanel(new GridLayout(1,0,25,5));
for (int ii=1; ii<4; ii++) {
b.add(new JButton("Button " + ii));
}
p.add(b, BorderLayout.CENTER);
return p;
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
JPanel gui = new JPanel(new GridLayout(0,1,3,15));
for (int ii=1; ii<4; ii++) {
gui.add(getButtonLayout(ii));
}
JOptionPane.showMessageDialog(null, gui);
}
});
}
}
Altri suggerimenti
Esistono molti modi per farlo, uno è per nidificare ulteriormente i jpanel. Metti un borderlayout di jpanel e dargli un borderlayout. Quindi aggiungi l'altro tuo JPanel a questo, Borderlayout.west.
Il layout di confine non ti consente di aggiungere qualcosa a nord -ovest direttamente.
Potresti voler fare il layout del JFrame
a GridBagLayout
, in modo da avere la flessibilità che desideri