我有JPanel
GridLayout(1,0)
设置为JFrame
Borderlayout.SOUTH
,此处放置了几个按钮(按下时会将变量值更改为创建按钮的索引)。
所有内容都正确添加,但是当我尝试更新JPanel
时,它确实起作用(仅当窗口最大化时)。但是当我翻过一个按钮(或所有按钮)时,它会回到面板的原始内容。
我已尝试invalidate
,validate
,repaint
,jframe.setvisible(true)
- 这些似乎都无法正常运作。
有什么想法吗?
private void toonHand(){
JPanel pnlSouth = new JPanel(new GridLayout(1,0));
JButton[] btnArr =new JButton[50];
ArrayList<Kaart> Thand=uno.getSpeler(0).getHand();
for(int i=0;i<Thand.size();i++){
final int T=i;
btnArr[i]=new JButton();
btnArr[i].setIcon(Thand.get(i).getImg());
btnArr[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
iKaart=T;
}
});
pnlSouth.add(btnArr[i]);
}
Hoofdvenster.remove(pnlSouth);
Hoofdvenster.add(pnlSouth, BorderLayout.SOUTH);
}
答案 0 :(得分:0)
问题是我只是删除了面板,更改了内容并再次添加。 显然,这给显示内容带来了一些问题。 我通过将面板作为全局变量来修复它,并拆分面板的制作和更新。所以在每次更新中我都会删除面板,让面板成为一个新面板然后再重新制作。