Salve a tutti.
Sono nuovo del forum e soprattutto mi sono da poco affacciato al mondo Java.
Sto realizzando questo programmino ma sto avendo un problema che non riesco a risolvere, sicuramente perché mi sfugge come lavorano i layout in java.
Vi spiego il problema:
Nel JFrame f ho inserito i tre JPanel p1, p2 e p3, con un GroupLayout.
Il panel p1 contiene i 4 JButton, il panel p2 contiene una JList e il panel p3 contiene un JTextField.
Vorrei che quando premo il pulsante “Lista 1” nella JList1 venga rappresentato una lista contenuta nel file primo.txt, quando premo il pulsante “Lista 2” nella JList1 venga rappresentato una lista contenuta in nel file secondo.txt e così via.
E fin qui, tutto bene.
Poi, una volta visualizzata la lista che mi interessa, selezionando un item contenuto in essa venga inserito nella JTextField del panel p3.
Il problema sorge qui, sembra che la lista, che pur è visibile, non risponda a nessun tipo di interazione e, inoltre, quando al JFrame f, tramite il comando f.getComponentCount() chiedo la lista dei componenti che ha, la risposta è: 1.
problema1.JPG
Di seguito il listato.
codice:
public class SelezionaDaMenu2 {
JFrame f = new JFrame("Show List");
JPanel p1 = null;
JPanel p2 = null;
JList p5 = null;
JPanel p3 = null;
JButton btn1 = null;
JButton btn2 = null;
JButton btn3 = null;
JButton btn4 = null;
private JPanel Costruisci_p1(){
p1 = new JPanel();
p1.setBackground(Color.GRAY);
btn1 = new JButton ("Lista 1");
btn2 = new JButton ("Lista 2");
btn3 = new JButton ("Lista 3");
btn4 = new JButton ("Lista 4");
GroupLayout layout_di_p1 = new GroupLayout(p1);
p1.setLayout(layout_di_p1);
layout_di_p1.setAutoCreateGaps(true);
layout_di_p1.setAutoCreateContainerGaps(true);
layout_di_p1.setHorizontalGroup(layout_di_p1.createSequentialGroup()
.addGroup(layout_di_p1.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(btn1)
.addComponent(btn2)
.addComponent(btn3)
.addComponent(btn4))
);
layout_di_p1.linkSize(SwingConstants.HORIZONTAL, btn1, btn2, btn3, btn4);
layout_di_p1.setVerticalGroup(layout_di_p1.createSequentialGroup()
.addComponent(btn1)
.addComponent(btn2)
.addComponent(btn3)
.addComponent(btn4)
);
layout_di_p1.linkSize(SwingConstants.VERTICAL, btn1, btn2, btn3, btn4);
return p1;
}
private JPanel Costruisci_p2() {
p5 = new JList();
p5.setPreferredSize(new Dimension(300, 300));
p2 = new JPanel();
p2.setBackground(Color.GRAY);
p2.add(p5);
return p2;
}
JSpinner sp = null;
JTextField tf = null;
private JPanel Costruisci_p3() {
p3 = new JPanel();
p3.setBackground(Color.CYAN);
p3.setPreferredSize(new Dimension(400, 500));
p3.setLayout(new FlowLayout());
sp = new JSpinner();
tf = new JTextField();
sp.setPreferredSize(new Dimension(60, 25));
tf.setPreferredSize(new Dimension(200, 25));
p3.add(tf);
p3.add(sp);
return p3;
}
private void CostruisciFrame() {
p1 = Costruisci_p1();
p2 = Costruisci_p2();
p3 = Costruisci_p3();
JSeparator separator_1 = new JSeparator();
separator_1.setOrientation(SwingConstants.VERTICAL);
GroupLayout layout_del_frame = new GroupLayout(f.getContentPane());
f.getContentPane().setLayout(layout_del_frame);
layout_del_frame.setAutoCreateGaps(true);
layout_del_frame.setAutoCreateContainerGaps(true);
layout_del_frame.setHorizontalGroup(layout_del_frame.createSequentialGroup()
.addComponent(p1)
.addComponent(p2)
.addComponent(p3)
);
layout_del_frame.setVerticalGroup(layout_del_frame.createSequentialGroup()
.addGroup(layout_del_frame.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(p1)
.addComponent(p2)
.addComponent(p3))
);
System.out.println(f.getLayout());
System.out.println(f.getComponentCount());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}
public SelezionaDaMenu2() {
CostruisciFrame();
btn1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
p2.removeAll();
String path = "c:/test/antipasti_mare.txt";
p5 = new Utility().creaJList(path, 20);
p2.add(p5);
p2.revalidate();
f.repaint();
}
});
btn2.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
p2.removeAll();
String path = "c:/test/antipasti_terra.txt";
p5 = new Utility().creaJList(path, 20);
p2.add(p5);
p2.revalidate();
f.repaint();
}
});
btn3.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
p2.removeAll();
String path = "c:/test/primi_mare.txt";
p5 = new Utility().creaJList(path, 20);
p2.add(p5);
p2.revalidate();
f.repaint();
}
});
btn4.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
p2.removeAll();
String path = "c:/test/primi_terra.txt";
p5 = new Utility().creaJList(path, 20);
p2.add(p5);
p2.revalidate();
f.repaint();
}
});
}}