我如何使一个JMenuItem打开一个JTextField当我点击它?



我正在编写允许用户输入,搜索和删除参与者的代码。现在我有一个JFrame,上面有一个JMenu和几个JMenuItems。当我运行程序并让JMenuItems打印一些东西时,它工作得很好。但是,例如,对于addItem JMenuItem,当addItem被单击时,我希望它打开一个JTextField。我手上的密码坏了。有人能解释一下原因吗?或者提供一个解决方案,当单击JMenuItems时,JTextFields将打开?谢谢你。

public class MyFrame extends JFrame implements ActionListener{
JMenuBar menuBar;
JMenu fileMenu;
JMenu exitMenu;
JMenuItem addItem;
JMenuItem searchItem;
JMenuItem groupItem;
JMenuItem removeItem;
JMenuItem exitItem;
MyFrame(){

this.setTitle("Swim Lessons");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(250, 250);
//this.setSize(1436, 810);
this.setLayout(null);

menuBar = new JMenuBar();

fileMenu = new JMenu("File");
exitMenu = new JMenu("Exit");

addItem = new JMenuItem("Add Child");
searchItem = new JMenuItem("Find Child");
groupItem = new JMenuItem("Find Group");
removeItem = new JMenuItem("Remove Child");
exitItem = new JMenuItem("Exit");


addItem.addActionListener(this);
searchItem.addActionListener(this);
groupItem.addActionListener(this);
removeItem.addActionListener(this);
exitItem.addActionListener(this);

fileMenu.add(addItem);
fileMenu.add(searchItem);
fileMenu.add(groupItem);
fileMenu.add(removeItem);
exitMenu.add(exitItem);

menuBar.add(fileMenu);
menuBar.add(exitMenu);

this.setJMenuBar(menuBar);

this.setVisible(true);

}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == addItem) {
JTextField name = new JTextField();
name.setPreferredSize(new Dimension(100,100));
this.add(name);
this.setVisible(true);
}
if(e.getSource() == searchItem) {
System.out.print("pee ");
}
if(e.getSource() == groupItem) {
System.out.print("beep ");
}
if(e.getSource() == removeItem) {
System.out.print("boop ");
}
if(e.getSource() == exitItem) {
System.exit(0);
}
}
}

旁注:我确实有所有的导入和类头文件。由于某些原因,这个站点不允许我将它们添加到代码部分。

先看一下如何制作对话框

if (e.getSource() == addItem) {
String input = JOptionPane.showInputDialog(this, "Item description", "Add item", JOptionPane.PLAIN_MESSAGE);
if (input != null) {
System.out.println("You have entered " + input);
}
}

不要使用null布局,这些会回来困扰你

最新更新