Java 单击子菜单时,打开一个额外窗口
我正在努力提高自己的java编程水平 我想做的是,我有一个菜单和子菜单,例如,我点击文件菜单,选择转换器(子菜单),我希望它为我的转换器程序打开一个新窗口 这是我的转换窗口Java 单击子菜单时,打开一个额外窗口,java,swing,jbutton,Java,Swing,Jbutton,我正在努力提高自己的java编程水平 我想做的是,我有一个菜单和子菜单,例如,我点击文件菜单,选择转换器(子菜单),我希望它为我的转换器程序打开一个新窗口 这是我的转换窗口 public class Converter extends JFrame { private static final long serialVersionUID = 1L; private MoneyDetails convertMe = new MoneyD
public class Converter extends JFrame {
private static final long serialVersionUID = 1L;
private MoneyDetails convertMe = new MoneyDetails();
private JLabel tlLabel = new JLabel(" Amount of TL");
private JLabel dollarsLabel = new JLabel("Amount of Dollars");
private JTextField tlField = new JTextField("0.0");
private JTextField dollarsField = new JTextField("0.0");
private JButton tlButton = new JButton("Convert to $");
private JButton dollarsButton = new JButton("<<< Convert to TL");
private JButton setRates = new JButton("Set Rates");
public Converter() {
JPanel dataPanel = new JPanel(new GridLayout(2, 2, 12, 6));
dataPanel.add(tlLabel);
dataPanel.add(dollarsLabel);
dataPanel.add(tlField);
dataPanel.add(dollarsField);
JPanel buttonPanel = new JPanel();
buttonPanel.add(tlButton);
buttonPanel.add(dollarsButton);
Container container = getContentPane();
container.add(dataPanel, BorderLayout.CENTER);
container.add(buttonPanel, BorderLayout.SOUTH);
tlButton.addActionListener(new TLConverter());
dollarsButton.addActionListener(new DollarsConverter());
buttonPanel.add(setRates);
}
private class TLConverter implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
String input = tlField.getText();
double tl = Double.parseDouble(input);
convertMe.setTL(tl);
double dollars = convertMe.getDollars();
dollarsField.setText(String.format("%.2f", dollars));
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Please enter the amount that will be converted.");
}
}
}
private class DollarsConverter implements ActionListener {
public void actionPerformed(ActionEvent e) {
String input = dollarsField.getText();
double dollars = Double.parseDouble(input);
convertMe.setDollars(dollars);
double tl = convertMe.getTL();
tlField.setText(String.format("%.2f", tl));
}
}
public static void main(String[] args) {
Converter theGUI = new Converter();
theGUI.setTitle("TL to $ or $ to TL Converter");
theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
theGUI.pack();
theGUI.setVisible(true);
}
}
当我点击我的子菜单时,我希望它打开我的转换窗口。我该怎么做呢?您需要的是一个事件侦听器,类似于:
fileMenu.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
new Converter();
}
});
您可以看到一个更完整的示例。您需要将侦听器添加到菜单项中,侦听器在特定事件发生时为您提供回调,如单击、鼠标出e.t.c 您可以向菜单项添加ActionListener,并在回调方法中显示GUI
subTest.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
Converter convert = new Converter("Testing Opening this from Menu Item");
convert.pack();
convert.setVisible(true);
}
});
您可以阅读Swing提供的所有不同侦听器。非常感谢,但我已经尝试了这个侦听器,它编译得非常好,但当我单击我的子菜单时,它不会弹出我的转换器窗口:/Edited my answer,在您的构造函数中,您只是将组件添加到框架中,而不是使其可见。试试这个应该行得通是的,那个行得通。非常感谢:)我所要做的就是为新窗口配置我的转换器窗口。有没有办法直接将我的窗口弹出到名为Testing的新窗口打开此菜单项?很高兴它帮助了您:)我不理解您的问题。我已将其应用于我的子菜单,但它不允许我使用addSelectionListener事件“希望它打开新窗口”请参见
subTest.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent actionEvent){
Converter convert = new Converter("Testing Opening this from Menu Item");
convert.pack();
convert.setVisible(true);
}
});