Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作一个发送信息并在发布时关闭的按钮?_Java_Swing - Fatal编程技术网

Java 如何制作一个发送信息并在发布时关闭的按钮?

Java 如何制作一个发送信息并在发布时关闭的按钮?,java,swing,Java,Swing,我没有GUI方面的经验,所以我只是闲逛,疯狂地想弄明白一些事情。我现在拥有的是,当我按下I按钮时,另一个窗口会弹出一个带有名称的组合框和一个关闭窗口并将所选选项发送回主窗口的按钮。 我似乎无法让窗口变得不可见,也无法将信息发送回原始窗口(library\u GUI) 我已经为你做了一个演示,检查它是否符合你的要求 public class JDialogDemo { public JDialogDemo() { JFrame mainWindow = new JFr

我没有GUI方面的经验,所以我只是闲逛,疯狂地想弄明白一些事情。我现在拥有的是,当我按下I按钮时,另一个窗口会弹出一个带有名称的组合框和一个关闭窗口并将所选选项发送回主窗口的按钮。 我似乎无法让窗口变得不可见,也无法将信息发送回原始窗口(library\u GUI)


我已经为你做了一个演示,检查它是否符合你的要求

public class JDialogDemo
{
    public JDialogDemo()
    {   
    JFrame mainWindow = new JFrame("mainWindow");
    mainWindow.setBounds(300, 300, 300, 300);
    mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JDialog dlg = new JDialog(mainWindow, true);
    dlg.setBounds(300, 300, 200, 100);
    final JComboBox box = new JComboBox(new String[]{"A", "B"});
    JButton okBtn = new JButton("Ok");
    okBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e)
        {
            Object item = box.getSelectedItem();
            System.out.println(item);
            dlg.setVisible(false);
        }

    });
    dlg.getContentPane().setLayout(new BorderLayout());
    dlg.getContentPane().add(box, BorderLayout.NORTH);
    dlg.getContentPane().add(okBtn, BorderLayout.CENTER);

    JButton popupBtn = new JButton("Popup");
    popupBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e)
        {
            dlg.setVisible(true);
        }

    });
    mainWindow.getContentPane().add(popupBtn, BorderLayout.NORTH);

    mainWindow.setVisible(true);
}

public static void main(String[] args)
{
    new JDialogDemo();
}
}

祝你好运,玩得开心。

在我看来,弹出的窗口是JDialog的一个实例,而不是JFrame。使用模态对话框作为第二个窗口,如JOptionPane或JDialog。然后让第一个类在对话框返回后查询组合框。1+表示努力。现在只需添加一个显示调用窗口的代码,提取并显示在对话框中获得的数据。
public class JDialogDemo
{
    public JDialogDemo()
    {   
    JFrame mainWindow = new JFrame("mainWindow");
    mainWindow.setBounds(300, 300, 300, 300);
    mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JDialog dlg = new JDialog(mainWindow, true);
    dlg.setBounds(300, 300, 200, 100);
    final JComboBox box = new JComboBox(new String[]{"A", "B"});
    JButton okBtn = new JButton("Ok");
    okBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e)
        {
            Object item = box.getSelectedItem();
            System.out.println(item);
            dlg.setVisible(false);
        }

    });
    dlg.getContentPane().setLayout(new BorderLayout());
    dlg.getContentPane().add(box, BorderLayout.NORTH);
    dlg.getContentPane().add(okBtn, BorderLayout.CENTER);

    JButton popupBtn = new JButton("Popup");
    popupBtn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e)
        {
            dlg.setVisible(true);
        }

    });
    mainWindow.getContentPane().add(popupBtn, BorderLayout.NORTH);

    mainWindow.setVisible(true);
}

public static void main(String[] args)
{
    new JDialogDemo();
}
}