JFrame在鼠标悬停时重新加载初始内容

时间:2012-03-14 03:27:46

标签: java swing jframe jpanel repaint

我有JPanel GridLayout(1,0)设置为JFrame Borderlayout.SOUTH,此处放置了几个按钮(按下时会将变量值更改为创建按钮的索引)。

所有内容都正确添加,但是当我尝试更新JPanel时,它确实起作用(仅当窗口最大化时)。但是当我翻过一个按钮(或所有按钮)时,它会回到面板的原始内容。

我已尝试invalidatevalidaterepaintjframe.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);
    }

1 个答案:

答案 0 :(得分:0)

问题是我只是删除了面板,更改了内容并再次添加。 显然,这给显示内容带来了一些问题。 我通过将面板作为全局变量来修复它,并拆分面板的制作和更新。所以在每次更新中我都会删除面板,让面板成为一个新面板然后再重新制作。