Je suis en train de créer un programme de base qui vise IUG à:Comment ajouter JPanel Dynamiquement et en le rendant cliquable?
- inserts Dynamiquement JPanel (le nombre de JPanel sera créé est la base de la taille de ma liste) qui est scrollable.
- Obtenez l'information du JPanel chaque fois que vous avez cliqué dessus.
Jusqu'à présent, ce que je l'ai fait:
...
public class BeesFrame extends javax.swing.JFrame {
List<String> bees = new ArrayList<>(Arrays.asList("Bee 1", "Bee 2", "Bee 3",
"Bee 4", "Bee 5", "Bee 6",
"Bee 7", "Bee 8", "Bee 9",
"Bee 10", "Bee 11", "Bee 12",
"Bee 13"));
GridBagLayout layout = new GridBagLayout();
JScrollPane scrollpane;
JPanel beesPanel;
JPanel beesCell;
JLabel label;
public BeesFrame() {
initComponents();
label = new JLabel();
for(int i = 0; i < bees.size(); i++){
beesCell = new JPanel();
beesCell.setName(bees.get(i));
beesCell.setPreferredSize(new Dimension(100, 100));
beesCell.setMinimumSize(new Dimension(100, 100));
beesCell.setBackground(Color.yellow);
label.setHorizontalTextPosition(SwingConstants.CENTER);
label.setText(beesCell.getName());
beesCell.add(label);
beesCell.validate();
beesCell.repaint();
System.out.println(bees.get(i));
}
beesMainPanel.setLayout(new GridLayout((bees.size()/4)+1, 4, 1, 1));
beesMainPanel.add(beesCell);
beesCell.setVisible(true);
beesCell.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e){
JPanel panel = (JPanel) getComponentAt(e.getPoint());
panel.setName(label.getText());
outPut(panel);
}
});
beesCell.validate();
beesCell.repaint();
}
void outPut(JPanel panel){
System.out.println("Panel...."+panel.getName());
}
... // some other code generated by Netbeans
}
Mais au lieu d'afficher correctement. Seul le dernier de ma liste est inséré et si je l'ai cliqué, son javax.swing.JRootPane ne peut pas être converti en javax.swing.JPanel. Ceci est l'erreur se produit:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JRootPane cannot be cast to javax.swing.JPanel
at catchingbees.frame.BeesFrame$1.mousePressed(BeesFrame.java:79)
at java.awt.Component.processMouseEvent(Component.java:6530)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
...
Voici la capture d'écran de mon sortie:
Mais ce que je voulais faire:
Toute aide est fortement appréciée.
1) Pour une meilleure aide plus tôt, poster un [MCVE] ou [Short, autoportantes correcte Exemple] (http: //www.sscce.org/). 2) Voir [Qu'est-ce qu'une trace de pile, et comment puis-je l'utiliser pour déboguer mes erreurs d'application?] (Http://stackoverflow.com/q/3988788/418556) & [Qu'est-ce qu'une exception de pointeur nul, et comment Je le répare?] (Http://stackoverflow.com/q/218384/418556) –