按构造函数添加组件

时间:2015-03-05 07:57:14

标签: java swing

我有按构造函数添加Label的问题,当我按方法创建时没问题

private void addLabel() {
    System.out.println("asd");
    JLabel label = new JLabel("asd");
    label.setBounds(10, 40, 100, 25);
    add(label);
    repaint();
    validate();
    System.out.println("asd2");
}

但是当我尝试通过新类和构造函数执行此操作时,我无法正常工作...

主框架:

public class Frame extends JFrame {

JButton button = new JButton("new");
AddButton button2 = new AddButton();

public Frame() {
    setLayout(null);
    setSize(400, 500);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    button.setBounds(40, 10, 50, 25);
    add(button);


    button2.setBounds(40, 40, 100, 25);
    add(button);
}

public static void main(String[] args) {
    Frame ap = new Frame();
    ap.setVisible(true);
}

AddButton类:

public class AddButton extends JPanel {
JLabel label = new JLabel("asd");

public AddButton() {
    label.setBounds(10, 40, 100, 25);
    add(label);
    repaint();
    validate();

  }

}

好的,我明白了,我试着添加“按钮”两次istead按钮和button2:D

2 个答案:

答案 0 :(得分:3)

你的constructor没有意义,那不是你应该如何使用构造函数 - 构造函数用于创建类的实例

写作时

AddButton button2 = new AddButton();

然后button2的类型为AddButtonadd不接受此类对象。

答案 1 :(得分:0)

您可以像这样编辑

public class AddButton extends JPanel {
JLabel label; 

public AddButton() {
label=new JLabel("asd");
label.setBounds(10, 40, 100, 25);
add(label);
repaint();
validate();

}

}