|
|
|
![]() |
|
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 15: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: 10:36.