所以我創建了一個三個按鈕的菜單,每個都會打開另一個窗口。我將這些按鈕添加到了actionListnener中,我檢查了Source,我做了所有事情。但它仍然是一個虛擬按鈕。actionPerformed不工作
夠了,我認爲如果你們看到代碼會更好。 提前謝謝!
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.border.EmptyBorder;
public class MainMenu extends JFrame
{
private JPanel contentPane;
private JButton decB;
private JButton hexB;
private JButton binB;
private JLabel label1;
public MainMenu()
{
setTitle("Hello Dear Friend");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 323, 303);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
setLocationRelativeTo(null);
JButton decB = new JButton("Decimal");
decB.setFont(new Font("Tahoma", Font.BOLD, 12));
decB.setBounds(79, 85, 146, 42);
decB.setBackground(new Color(212, 208, 199));
decB.setFocusPainted(false);
JButton hexB = new JButton("Hexadecimal");
hexB.setFont(new Font("Tahoma", Font.BOLD, 12));
hexB.setBounds(79, 138, 146, 42);
hexB.setBackground(new Color(212, 208, 199));
hexB.setFocusPainted(false);
JButton binB = new JButton("Binary");
binB.setFont(new Font("Tahoma", Font.BOLD, 12));
binB.setBounds(79, 191, 146, 42);
binB.setBackground(new Color(212, 208, 199));
binB.setFocusPainted(false);
JLabel label1 = new JLabel("Select the base you wish to convert: ");
label1.setFont(new Font("Courier New", Font.BOLD, 12));
label1.setBounds(20, 11, 277, 63);
contentPane.add(decB);
contentPane.add(binB);
contentPane.add(hexB);
contentPane.add(label1);
ButtonHandler bh = new ButtonHandler();
decB.addActionListener(bh);
hexB.addActionListener(bh);
binB.addActionListener(bh);
}
private class ButtonHandler implements ActionListener
{
DecMenu dm = new DecMenu();
BinaryMenu bm = new BinaryMenu();
HexMenu hm = new HexMenu();
public void actionPerformed(ActionEvent event)
{
setVisible(false);
if(event.getSource() == decB)
dm.setVisible(true);
else if(event.getSource() == hexB)
hm.setVisible(true);
else if(event.getSource() == binB)
bm.setVisible(true);
}
}
}
你期待看到什麼?看起來你並沒有對菜單做任何事情,所以當它們被顯示時,沒有任何東西可以顯示。你是否在動作監聽器代碼中放置了一些打印語句?我敢打賭他們射擊很好。 – thatidiotguy
我期待在單擊按鈕後出現其他框架。是的,我已經在actionlistener中打印了語句,這意味着actionlistener正在工作,但正如我所說的,我沒有看到任何菜單。 – altaha0a