Hallo an alle,
Ich habe ein Problem mit dem CardLayout. Ich schaffe mir eine Matrix von Panels mit CardLayout, die ich in ein höheres Panel einbette. Dann lege ich wie üblich ein Panel und ein Label auf das CardLayout. Zu einem späteren Zeitpunkt möchte ich nun diese mit der show-Funktion wild aufrufen können. Es passiert jedoch nichts und mit nichts mein ich nichts. Keine Fehlermeldung, keine Reaktion, kein Garnichts. Im folgenden nur der Quellcode, jedoch nur in Ausschnitten, da der vollständige Code wohl die maximale Länge des Beitrag überschreiten würde:
Ich habe ein Problem mit dem CardLayout. Ich schaffe mir eine Matrix von Panels mit CardLayout, die ich in ein höheres Panel einbette. Dann lege ich wie üblich ein Panel und ein Label auf das CardLayout. Zu einem späteren Zeitpunkt möchte ich nun diese mit der show-Funktion wild aufrufen können. Es passiert jedoch nichts und mit nichts mein ich nichts. Keine Fehlermeldung, keine Reaktion, kein Garnichts. Im folgenden nur der Quellcode, jedoch nur in Ausschnitten, da der vollständige Code wohl die maximale Länge des Beitrag überschreiten würde:
Java:
class Frame1 extends JFrame{
private JPanel[][] panels;
private JLabel[][] values;
private JPanel[][] candidatePanels;
private CardLayout cl;
private GridBagLayout gbl;
private final String val ="Value";
[...]
private JPanel newSudokuPanel() {
cl = new CardLayout();
gbl = new GridBagLayout();
[...]
}
[...]
private void getPanels() {
panels = new JPanel[9][9];
Dimension d = new Dimension(50,50);
for(int i=0;i<9;i++)
for(int j=0;j<9;j++){
panels[i][j]=new JPanel(cl);
panels[i][j].setPreferredSize(d);
panels[i][j].setBorder(new LineBorder(Color.black));
}
values = new JLabel[9][9];
candidatePanels = new JPanel[9][9];
for(int i=0;i<9;i++)
for(int j=0;j<9;j++){
candidatePanels[i][j]=new JPanel(gbl);
candidatePanels[i][j].setBackground(Color.white);
}
[...]
}
[...]
public void fillWithSudoku(int[][] sudoku){
for(int i=0;i<sudoku.length;i++)
for(int j=0;j<sudoku.length;j++){
if(sudoku[i][j]!=0){
makeStaticField(i,j,sudoku[i][j]);
continue;
}
makedynamicField(i,j);
}
}
private void makedynamicField(int y, int x) {
panels[y][x].addMouseListener((MouseListener) al);
panels[y][x].addFocusListener((FocusListener) al);
panels[y][x].addKeyListener((KeyListener) al);
panels[y][x].setBackground(Color.white);
values[y][x] = new JLabel("",JLabel.CENTER);
values[y][x].setFont(new Font("test",Font.BOLD,25));
values[y][x].setForeground(Color.blue);
panels[y][x].add(candidatePanels[y][x],"Candidate");
panels[y][x].add(val,values[y][x]);
cl.show(panels[0][1],"Value");
}
private void makeStaticField(int y, int x, int k) {
JLabel staticField = new JLabel(String.valueOf(k),JLabel.CENTER);
staticField.setFont(new Font("test",Font.BOLD,25));
panels[y][x].add(staticField,"Value");
}
public void changeVC(JPanel panel){
System.out.println("as");
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
if(panel.equals(panels[i][j])){
//an dieser Stelle passiert nichts:
cl.show(panels[i][j],"");
System.out.println("jaaaaaaa");
}
}
[...]
}