2012-12-06 64 views
1

我想在JFrame容器上添加和刪除JFXPanel但無法做到這一點。我被卡在這裏,並沒有得到適當的解決方案按鈕點擊我想添加和刪除JFXPanel控制。在Swing JFrame上添加/刪除JFXPanel

這段代碼有什麼問題?

public class abc extends JFrame 
    { 
    JFXPanel fxpanel; 
    Container cp; 
    public abc() 
    { 
    cp=this.getContentPane(); 
    cp.setLayout(null); 
    JButton b1= new JButton("Ok"); 
    JButton b2= new JButton("hide"); 
    cp.add(b1); 
    cp.add(b2); 
    b1.setBounds(20,50,50,50); 
    b2.setBounds(70,50,50,50); 
    b1.addActionListener(this); 
    b2.addActionListener(this); 
    fxpanel= new JFXPanel(); 
    cp.add(fxpanel); 
    fxpanel.setBounds(600,200,400,500); 
} 

    public void actionPerformed(ActionEvent ae) 
{ 
if(ae.getActionCommand().equals("OK")) 
    { 
    fxpanel= new JFXPanel(); 
    cp.add(fxpanel); 
    fxpanel.setBounds(600,200,400,500); 


    } 
    if(ae.getActionCommand().equals("hide")) 
    { 
    cp.remove(fxpanel); 
    } 
    } 
    public static void main(String args[]) 
    { 

     abc f1= new abc(); 
     f1.show(); 
    } 
    } 
+1

這段代碼有什麼問題 –

+1

'cp.setLayout(null);'使用佈局。有關「添加和刪除內容」,請參閱['CardLayout'](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)。 –

回答

2
  • 不要延長JFrame電話不必要

  • 不使用null/AbsoluteLayoutManager

  • 爲什麼要用show()設置JFrame可見?你應該用setVisible(true)

  • 不要忘記Swing組件應創建通過SwingUtilities.invokeXXX和JavaFX組件通過Platform.runLater()

Event Dispatch Thread一個被操縱的除了你上面有個最大的問題是,你不刷新GUI /容器添加/刪除組件後,因此沒有顯示更改:

調用revalidate()repaint() on JFrame實例以反映添加/刪除組件後的更改從一個可見的容器。