|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
[Java] - GridLayout con scrollbar
ciao a tutti!
avrei bisogno di posizionare in maniera tabellare (gridlayout) un numero aleatorio di checkbox. Superato un certo limite queste checkbox vengono a sovrapporsi per mancanza di spazio. Ho provato inserendo un JScrollPanel ma inevitabilmente questo viene posizionato in una delle celle di questa griglia. Sto uscendo pazzo da ieri pomeriggio e non riesco a trovare la soluzione! AIUTO!!!! Grazie anticipatamente!!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se puoi, posta il codice.
Probabilmente stai aggiungendo con .add() il JScrollPane dentro il Componente che ha come LayoutManager il GridLayout e quindi viene posizionato assieme alle tue JCheckBox. Quello che invece devi fare è aggiungere il Componente dentro al JScrollPane, non viceversa. Ipotizzo sia questo l'errore, ciao
__________________
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) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
@EDIT:
se ti servono informazioni su come si usa uno Scroll Pane qui trovi un'ottima introduzione (How to della Sun)
__________________
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) |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
ciao, innanzitutto grazie per la risposta!
ho cercato di fare quello che mi hai detto ma ottengo vari errori....preferisco dunque postarti il codice così come stava: visualizzazione errata ma senza errori. Codice:
import java.awt.Checkbox;
import java.awt.GridLayout;
import javax.swing.*;
public class NewSwingApp extends javax.swing.JFrame {
private JScrollPane jScrollPane1;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
NewSwingApp inst = new NewSwingApp();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public NewSwingApp() {
super();
initGUI();
{
jScrollPane1 = new JScrollPane();
getContentPane().add(jScrollPane1);
}
setLayout(new GridLayout(10, 5));
for(int i=0; i<=49; i++)
{
add(new Checkbox(""+i+""));
}
}
private void initGUI() {
try {
setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Inoltre l'oggetto per cui viene settato il LayoutManager e in cui vengono aggiunte le le checkBox è (implicitamente) il content pane di NewSwingApp, che è un JFrame [seconda e terza selezione in grassetto]. Per sistemare, io organizzerei i componenti interni al JFrame così: - un JPanel dentro al (content pane del) JFrame; - questo JPanel è il client del tuo JScrollPane [vedi link precedentement postato per come fare] - il JPanel avrà come LayoutManager GridLayout; - dentro al JPanel aggiungi le JCheckBox. Inoltre sistemerei alcune cose nel codice che mi sembrano "poco pulite": per questo aspetto però posto più tardi che adesso devo scappare!
__________________
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) |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
MITICO!!! Così funziona!!!
Se vedi qualcosa di strano fammi sapere: non vorrei problemi dell'ultimo minuto. Codice:
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.GridLayout;
import javax.swing.*;
public class NewSwingApp2 extends javax.swing.JFrame {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
NewSwingApp2 inst = new NewSwingApp2();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public NewSwingApp2() {
super();
initGUI();
}
private void initGUI() {
JPanel p = new JPanel(new GridLayout(100,5));
JScrollPane sp = new JScrollPane(p);
for(int i=0; i<=499; i++)
{
p.add(new Checkbox(""+i+""));
}
add(sp, BorderLayout.CENTER);
this.setSize(400, 300);
}
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Mi sembra a posto adesso.
Solo una cosa che probabilmente già conosci: se vuoi che nella barra del titolo del tuo JFrame compaia una stringa ti basta passarla al costruttore di JFrame, nel tuo codice, dato che la tua classe eredita da JFrame, basta che passi la stringa come parametro a super(), qui: Codice:
public NewSwingApp2() {
super("Title of my application");
initGUI();
}
__________________
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) |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
Si quest'ultima cosa la sapevo.
Grazie ancora per l'imbeccata. Se stavo ad aspettare jigloo c'avrei perso un'altra giornata! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:52.



















