我正在制作一个带有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();
}
}
}
答案 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);
}