2014-07-05 35 views
0

我的ActionListener代碼爲JButton轉到另一個JPanel,但它不能正常工作,雖然它以前工作。我的代碼如下:我的JButton動作監聽器不工作

JButton btnNext = new JButton("Next"); 
btnNext.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     JPanel contentPane = new ListofDuties2(myFrame); 
     myFrame.getContentPane().removeAll(); 
     myFrame.setContentPane(contentPane); 
     myFrame.setVisible(true); 
    } 
}); 
btnNext.setBounds(194, 381, 89, 23); 
add(btnNext); 

我不太確定它有什麼問題。

+0

查看[CardLayout](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)以獲取更清潔的方法 –

回答

1
btnNext.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       JPanel contentPane = new ListofDuties2(myFrame); 
       myFrame.getContentPane().removeAll(); 
       myFrame.setContentPane(contentPane); 
       myFrame.getContentPane().revalidate(); 
       myFrame.setVisible(true); 
      }}); 

你到底忘了);

也叫revalidate()

+0

不會自動取消所有操作嗎?用戶需要重新驗證? – BlackBox

+0

@BlackBox哦,是的!它確實!我的錯! –

4

當添加/從可視GUI的基本代碼是刪除組件:

panel.remove(...); 
panel.add(); 
panel.revalidate(); // to invoke the layout manager 
panel.repaint(); 

問題是爲什麼你使用removeAll()嗎?任何時候我看到這樣的代碼,這意味着你應該使用Card Layout,然後只是交換面板。