kevinpirola
27-08-2012, 18:50
ciao a tutti, sto cercando di impostare il layout del mio programma ma mi trovo un po' in difficoltà.
inizio col postare quello che ho scritto:
ArrayList<String> cat = this.d.listTableValues("categories");
FlowLayout pan = new FlowLayout();
pan.setAlignment(FlowLayout.TRAILING);
this.setLayout(pan);
this.setAlignmentX(TOP_ALIGNMENT);
for (int i = 0; i < cat.size(); i++) {
GridLayout grid = new GridLayout(1, 1, 10, 20);
JPanel p = new JPanel();
p.setBorder(BorderFactory.createLineBorder(Color.black));
p.setLayout(grid);
this.add(p);
try {
ArrayList<String> bts = this.d.listTableValues("products WHERE CAT=" + i);
if (grid.getRows() < bts.size()) {
grid.setRows(bts.size());
}
for (int j = 0; j < bts.size(); j++) {
JButton btt = new JButton(bts.get(j));
// btt.setBounds(10 + (100 * i), 10 + (20 * j), 90, 10);
btt.setVisible(true);
p.add(btt);
btt.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
System.out.println(evt.getSource());
// this.convertButtonActionPerformed(evt);
}
});
}
} catch (Exception e) {
}
this.pack();
Il mio intento è quello di creare sulla sinistra 5 colonne di pulsanti e sulla destra lasciare spazio per altre cose come caselle di testo ecc ecc. La mia idea era quindi di creare un layout a griglia, poi però ho scoperto che non posso scegliere io in che punto della griglia inserire il Component, rendendolo inutile.
successivamente ho ipotizzato di tenere il layout a griglia, però di 1 sola colonna, ed affiancare le varie colonne con un flow layout.
il risultato sembra buono, però i vari JPanel con il GridLayout sono allineati inesorabilmente al centro dello spazio verticale.
Io vorre invece che i vari pulsati fossero divisi in n righe (lette da database), che però ogni riga possa avere un numero qualsiasi di pulsanti e altri oggetti (compatibilmente con lo spazio verticale ovviamente). Finite queste colonne vorrei che ci fosse una zona di testo non modificabile che presenti il risultato finale che sarà stampato e sotto a questo una label con il totale dei prezzi e una serie di bottoni per annullare, cancellare ecc.
Suggerimenti?
inizio col postare quello che ho scritto:
ArrayList<String> cat = this.d.listTableValues("categories");
FlowLayout pan = new FlowLayout();
pan.setAlignment(FlowLayout.TRAILING);
this.setLayout(pan);
this.setAlignmentX(TOP_ALIGNMENT);
for (int i = 0; i < cat.size(); i++) {
GridLayout grid = new GridLayout(1, 1, 10, 20);
JPanel p = new JPanel();
p.setBorder(BorderFactory.createLineBorder(Color.black));
p.setLayout(grid);
this.add(p);
try {
ArrayList<String> bts = this.d.listTableValues("products WHERE CAT=" + i);
if (grid.getRows() < bts.size()) {
grid.setRows(bts.size());
}
for (int j = 0; j < bts.size(); j++) {
JButton btt = new JButton(bts.get(j));
// btt.setBounds(10 + (100 * i), 10 + (20 * j), 90, 10);
btt.setVisible(true);
p.add(btt);
btt.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
System.out.println(evt.getSource());
// this.convertButtonActionPerformed(evt);
}
});
}
} catch (Exception e) {
}
this.pack();
Il mio intento è quello di creare sulla sinistra 5 colonne di pulsanti e sulla destra lasciare spazio per altre cose come caselle di testo ecc ecc. La mia idea era quindi di creare un layout a griglia, poi però ho scoperto che non posso scegliere io in che punto della griglia inserire il Component, rendendolo inutile.
successivamente ho ipotizzato di tenere il layout a griglia, però di 1 sola colonna, ed affiancare le varie colonne con un flow layout.
il risultato sembra buono, però i vari JPanel con il GridLayout sono allineati inesorabilmente al centro dello spazio verticale.
Io vorre invece che i vari pulsati fossero divisi in n righe (lette da database), che però ogni riga possa avere un numero qualsiasi di pulsanti e altri oggetti (compatibilmente con lo spazio verticale ovviamente). Finite queste colonne vorrei che ci fosse una zona di testo non modificabile che presenti il risultato finale che sarà stampato e sotto a questo una label con il totale dei prezzi e una serie di bottoni per annullare, cancellare ecc.
Suggerimenti?