在 JFrame 中刷新 JPanel
refreshing JPanels within a JFrame
我的 JFrame 中有 3 个不同的面板,每次调用更改面板中按钮文本的方法时,我都试图更新其中的第一个和第三个面板。 (在第3个面板(panel)里面,有49个按钮,呈7×7的网格布局)
第一个面板 (panel1) 只有一个 jbutton,我正在尝试更新文本,但它也不起作用。
public void update() {
for (int c=0; c< Board.COLS; c++) {
for (int r=0; r< Board.ROWS; r++) {
JButton b = (JButton) panel.getComponent(r*7+c);
b.setOpaque(true);
b.setFocusable(false);
b.setPreferredSize(new Dimension(220,220));
b.setFont(b.getFont().deriveFont(Font.BOLD, b.getFont().getSize()*6));
b.setText("" + board.map[c][r].getType());
panel.add(b);
}
}
JButton extra = (JButton) (panel1.getComponent(0));
extra.setPreferredSize(new Dimension(200,100));
extra.setFont(extra.getFont().deriveFont(Font.BOLD, extra.getFont().getSize()*6));
extra.setText("" + board.oldTile.getType());
panel1.add(extra);
panel.repaint();
panel1.repaint();
}`
我这里的内容对我的 JFrame 进行了某种刷新,但它到处都是。这些值不在应有的位置,有时 JButton 为空。我认为问题是在面板内获取特定按钮,但我不知道该怎么做。
panel.add(b);
所以你继续添加相同的按钮,尽管导致组件顺序混乱。
我的意见是保留一个 JButton[][]
二维数组,在每个按钮创建并添加到父级之后立即填充。通过行和列直接从那里访问您的按钮,无需跟踪组件计数。
我的 JFrame 中有 3 个不同的面板,每次调用更改面板中按钮文本的方法时,我都试图更新其中的第一个和第三个面板。 (在第3个面板(panel)里面,有49个按钮,呈7×7的网格布局)
第一个面板 (panel1) 只有一个 jbutton,我正在尝试更新文本,但它也不起作用。
public void update() {
for (int c=0; c< Board.COLS; c++) {
for (int r=0; r< Board.ROWS; r++) {
JButton b = (JButton) panel.getComponent(r*7+c);
b.setOpaque(true);
b.setFocusable(false);
b.setPreferredSize(new Dimension(220,220));
b.setFont(b.getFont().deriveFont(Font.BOLD, b.getFont().getSize()*6));
b.setText("" + board.map[c][r].getType());
panel.add(b);
}
}
JButton extra = (JButton) (panel1.getComponent(0));
extra.setPreferredSize(new Dimension(200,100));
extra.setFont(extra.getFont().deriveFont(Font.BOLD, extra.getFont().getSize()*6));
extra.setText("" + board.oldTile.getType());
panel1.add(extra);
panel.repaint();
panel1.repaint();
}`
我这里的内容对我的 JFrame 进行了某种刷新,但它到处都是。这些值不在应有的位置,有时 JButton 为空。我认为问题是在面板内获取特定按钮,但我不知道该怎么做。
panel.add(b);
所以你继续添加相同的按钮,尽管导致组件顺序混乱。
我的意见是保留一个 JButton[][]
二维数组,在每个按钮创建并添加到父级之后立即填充。通过行和列直接从那里访问您的按钮,无需跟踪组件计数。