Originariamente inviato da ryaas
allora, siccome devo farlo con JButton e JPanel, uso il metodo del cardlayout.
Vedi se sbaglio qualcosa pls?
Ma con il codice che hai postato hai un CardLayout che contiene 2 pannelli, quello con tutti i pulsanti e quello con tutte le label.
CardLayout visualizzerebbe o l'uno o l'altro pannello, quindi o solo le label o solo i pulsanti ..... e non è questo che vuoi!! Quindi quello che hai scritto non ti serve a nulla.
Vuoi un aiutino???
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TestFrame extends JFrame {
public TestFrame() {
super("Test");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(10, 10));
int n = 1;
for (int y = 0; y < 10; y++) {
for (int x = 0; x < 10; x++) {
contentPane.add(new CellPanel(""+n));
n++;
}
}
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TestFrame().setVisible(true);
}
});
}
}
class CellPanel extends JPanel {
private CardLayout cardLayout;
private JButton button;
private JLabel label;
public CellPanel(String labelText) {
button = new JButton((String) null);
button.setMargin(new Insets(0, 0, 0, 0));
button.setFocusPainted(false);
label = new JLabel(labelText);
label.setHorizontalAlignment(JLabel.CENTER);
cardLayout = new CardLayout();
setLayout(cardLayout);
add(button, "B");
add(label, "L");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cardLayout.show(CellPanel.this, "L");
}
});
}
}