簡體   English   中英

使用動作偵聽器在同一類中調用void函數

[英]use actionlistener to call void function in same class

我在使用動作偵聽器在同一個類中調用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 void方法?

如果你把

 System.out.println("hi");

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

}

您會看到喜好打印到您的控制台,您的代碼正在運行,但是Layout中存在問題。

將組件添加到可見的JFrame / JPanel /其他組件時,添加后無需調用revalidate()repaint()方法。 如下更改您的panelAdd()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM