|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
[JAVA] problema creazione griglia per GridBagLayout
Ciao a tutti, sto realizzando un'applicazione in Java utilizzando come LayoutManager il GridBagLayout. Il mio unico problema è che non so come realizzare la griglia per il programma che vedete in foto...voi come fareste? NB: mi interessa solo lo schema con la suddivisione in celle, per il resto il programma funziona alla perfezione
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Direi tre righe, quattro colonne.
L'area bianca occupa una riga per quattro colonne, riempie tutta la cella e si accaparra tutto lo spazio verticale in eccesso. Il resto occupa una cella singola. Giocando un po' con weightx e gli allineamenti riesci poi ad appoggiare i singoli componenti ai lati destro o sinistro delle rispettive celle.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
* edit
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 01-07-2009 alle 16:30. Motivo: ho cannato |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
ok, come l'avevo pensata io...l'unica cosa è che cliccando sul bottone si modifica il testo della JLabel che passa da ATTIVATO a DISATTIVATO e viceversa, modificando quindi la larghezza della colonna...come posso fare per evitare questo inconveniente?
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
fissa le dimensioni dei componenti che non vuoi che si ridimensionino (setMinimum e setMaximumSize a getPreferredSize in un ComponentAdapter).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
uff, non capisco...non mi viene niente...
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Una soluzione è questa:
Codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() { start(); }
});
}
private static void fixSize(final JComponent...comps) {
for(final JComponent c : comps) {
c.setMinimumSize(c.getSize());
c.setMaximumSize(c.getSize());
c.setPreferredSize(c.getSize());
}
}
private static void start() {
class Lim extends GridBagConstraints {
Lim(int...v) {
gridx = v[0];
gridy = v[1];
gridwidth = v[2];
gridheight = v[3];
weightx = v[4];
weighty = v[5];
fill = v[6];
anchor = v[7];
}
Lim ins(int top, int left, int right, int bottom) {
insets.top = top;
insets.left = left;
insets.right = right;
insets.bottom = bottom;
return this;
}
};
final JLabel l = new JLabel("ABILITATO");
JButton b = new JButton(new AbstractAction("Cambia stato") {
@Override
public void actionPerformed(ActionEvent e) {
if("ABILITATO".equals(l.getText())) {
l.setText("DISABILITATO");
} else {
l.setText("ABILITATO");
}
}
});
JComponent c0 = b;
JComponent c1 = l;
JComponent c2 = new JLabel("X = ");
JComponent c3 = new JTextField(6);
JComponent c4 = new JLabel("Y = ");
JComponent c5 = new JTextField(6);
JComponent c6 = new JScrollPane(new JTextArea(20,30));
JPanel panel = new JPanel(new GridBagLayout());
panel.add(c0, new Lim(0, 0, 1, 1, 0, 0, Lim.NONE, Lim.CENTER));
panel.add(c1, new Lim(1, 0, 1, 1, 0, 0, Lim.NONE, Lim.CENTER).ins(0,10,0,0));
panel.add(c2, new Lim(2, 0, 1, 1, 1, 0, Lim.NONE, Lim.EAST));
panel.add(c3, new Lim(3, 0, 1, 1, 0, 0, Lim.NONE, Lim.WEST).ins(0,0,40,0));
panel.add(c4, new Lim(2, 1, 1, 1, 0, 0, Lim.NONE, Lim.EAST));
panel.add(c5, new Lim(3, 1, 1, 1, 0, 0, Lim.NONE, Lim.WEST).ins(0,0,40,0));
panel.add(c6, new Lim(0, 2, 4, 1, 1, 1, Lim.BOTH, Lim.CENTER).ins(10,0,0,0));
JFrame window = new JFrame("Test");
window.add(panel);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.pack();
fixSize(c3, c5);
window.setVisible(true);
}
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
diavolo, non capisco come fare a mettere vicine le prime due righe
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
|
come non detto, è bastato spippolare coi pesi
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:06.




















