2013-12-11 57 views
1

我有問題使用動作偵聽器在同一類中調用void函數。使用actionlistener在同一類中調用void函數

例子.. 代碼:

public class Product extends JPanel { 

    JButton add; 
    JPanel pAdd; 
    JLabel test; 
    JFrame frame; 

    public Product() { 
     add = new JButton("Add Product"); 
     add.addActionListener(new ButtonListener()); 

     add(add); 
    } 

    public void panelAdd(){ 
     pAdd = new JPanel(); 
     pAdd.add(new JLabel("try")); 
     add(pAdd); 

    } 

    private class ButtonListener implements ActionListener { 
     public void actionPerformed(ActionEvent event) { 
      panelAdd(); 
     } 
    } 
} 

如何使調用panelAdd無效的方法?

+1

使產品的靜態,或創造與ButtonListener產品的實例的構造方法,以保持它作爲一個字段 – Charline

+1

我不明白你的問題。課程編譯。所以你可以這樣稱呼你的無效方法!那麼,你對此有什麼真正的問題? – bobbel

+0

bobbel ..是的,類編譯..但我的GUI不出現..首先我運行公共產品方法..然後當我點擊「添加」按鈕,我想它運行panelAdd方法..但它不出現.. –

回答

0

當您添加組件可見JFrame/JPanel /其他組件,您NEET加入後打電話到revalidate()repaint()方法。更改panelAdd()像下一個:

public void panelAdd(){ 
    pAdd = new JPanel(); 
    pAdd.add(new JLabel("try")); 
    add(pAdd); 
    revalidate(); 
    repaint(); 
} 
+0

thankx ..它的工作:) –

0

如果你把

System.out.println("hi"); 

public void panelAdd(){ 
    System.out.println("hi"); 
    pAdd = new JPanel(); 
    pAdd.add(new JLabel("try")); 
    add(pAdd); 

}

你會看到喜打印到控制檯,你的代碼的工作,但你的佈局有問題。

相關問題