Margine / riempimento in GridBagLayout Java
-
27-10-2019 - |
Domanda
-
È possibile impostare un margine / riempimento in
GridBagLayout
per l'intera riga / colonna?Tuttavia, utilizzo l'inset sull'oggetto constraints, utilizzando questo approccio ho bisogno di impostare il padding dal basso su ogni singolo componente. -
È possibile riempire tutto il contenuto nel
JFrame
?Perché ora ogni componente è allineato con il telaio.
constraints.weightx = 2;
constraints.weighty = 1;
constraints.fill = GridBagConstraints.BOTH;
addComponent(this, layout, constraints, questionPanel = new QuestionPanel(), 0, 0, 1, 1);
constraints.weightx = 1;
constraints.weighty = 1;
constraints.fill = GridBagConstraints.BOTH;
addComponent(this, layout, constraints, categoryPanel = new CategoryPanel(), 0, 1, 1, 1);
constraints.weightx = 1;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.HORIZONTAL;
addComponent(this, layout, constraints, answerPanel = new AnswerPanel(), 1, 0, 2, 1);
constraints.weightx = 1;
constraints.weighty = 2;
constraints.fill = GridBagConstraints.BOTH;
addComponent(this, layout, constraints, tabPane = new JTabbedPane(), 2, 0, 2, 1);
constraints.weightx = 1;
constraints.weighty = 0;
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.SOUTHEAST;
addComponent(this, layout, constraints, buttonPanel = new ButtonPanel(), 3, 1, 1, 1);
Sto utilizzando un metodo privato addComponent:
private void addComponent(Container context, GridBagLayout _layout, GridBagConstraints _constraints, Component component, int row, int column, int width, int height) {
_constraints.gridx = column;
_constraints.gridy = row;
_constraints.gridwidth = width;
_constraints.gridheight = height;
_layout.setConstraints(component, _constraints);
context.add(component);
}
Come posso aggiungere un po 'di "aria (padding / margin)" tra le celle?
Soluzione
Per quanto ne so, l'unico modo per eseguire il primo è impostare un oggetto Insets per ogni vincolo ... (Il layout della codifica manuale chiaramente non era progettato per essere facileJava: P)
Ma c'è un modo molto semplice per eseguire il secondo, senza perdere tempo con alcun Inset o altro: imposta il layout del contentPane su un FlowLayout con qualsiasi spazio verticale e orizzontale che desideri, aggiungi un pannello al contentPane e invecedi aggiungere tutto al contentPane, aggiungilo al tuo nuovo pannello.
Altri suggerimenti
Utilizza la proprietà inset
della classe GridBagConstraints
Ad esempio:
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);
Spero che questo sia quello che stai cercando.