【问题标题】:How can I make a JMenuItem open a JTextField when I click it?当我单击它时,如何使 JMenuItem 打开一个 JTextField?
【发布时间】:2022-06-19 03:32:49
【问题描述】:

我正在编写允许用户输入、搜索和删除参与者的代码。现在我有一个 JFrame,上面有一个 JMenu 和几个 JMenuItem。当我运行程序并让 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);
    }
}
}

旁注:我确实有我所有的导入和类头。出于某种原因,该站点不允许我将它们添加到代码部分。

【问题讨论】:

标签: java swing jlabel jmenu jmenuitem


【解决方案1】:

先看看How to Make Dialogs

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 布局,这些会回来困扰你

【讨论】:

    猜你喜欢
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2019-07-01
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多