Java - 按钮中的按钮

时间:2014-05-08 15:37:04

标签: java jbutton

我正在制作一个带有JButton的程序,但是我有一个MyFrame类,按钮位于另一个名为KnoppenPanel的类中。问题是,当我这样做时,我会在JButton中获得JButton。所以我有2个按钮和另外一个按钮围绕这些。我该如何解决这个问题?

MyFrame:

public class MyFrame extends JFrame {

    Uithangbord u = new Uithangbord();
    KnoppenPanel kp = new KnoppenPanel();

    public MyFrame() {
        setLayout(new FlowLayout());

        add(u);
        add(kp);

        setSize(280, 180);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

public class KnoppenPanel extends JButton implements ActionListener {
private JButton b, b2;
private JPanel p1;

Uithangbord bord = new Uithangbord();

public KnoppenPanel() {
    p1 = new JPanel();
    add(p1);

    b = new JButton("Open");
    p1.add(b);
    b.addActionListener(this);

    b2 = new JButton("Gesloten");
    p1.add(b2);
    b2.addActionListener(this);
}

public void actionPerformed(ActionEvent event) {
    JButton knop = (JButton)(event.getSource());
    if (knop == b) {
        b.setEnabled(false);
        b2.setEnabled(true);
        bord.maakOpen();
    }
    if (knop == b2) {
        b2.setEnabled(false);
        b.setEnabled(true);
        bord.maakGesloten();
    }
}
}

1 个答案:

答案 0 :(得分:5)

您的课程正在扩展JButton。然后,当您添加JPanel(包含2 JButton)时,您将在JButton中添加此内容。

我认为你想要的是KnoppenPanel只有2 JButtons然后你只需要改变:

public class KnoppenPanel extends JButton implements ActionListener {

通过

public class KnoppenPanel extends JPanel implements ActionListener {

如果你做了这个改变,你也可以直接在KnoppenPanel中添加JButton:

public KnoppenPanel() {

    b = new JButton("Open");
    add(b);
    b.addActionListener(this);

    b2 = new JButton("Gesloten");
    add(b2);
    b2.addActionListener(this);
}