如何检查另一个Jframe中是否单击了按钮

时间:2019-05-11 05:22:42

标签: java swing

所以我有两个简单的jframe ,一个是主框架,另一个只有在按下按钮时才可见。

enter image description here

enter image description here

我现在要做的是在第二个jframe 显示正在按下哪个按钮,无论它的玩具还是食物在第一个jframe的jlabel中

第一个jframe中的按钮启动选择将链接到第二个jframe,然后用户单击两个按钮之一,然后单击的按钮将显示在 jlabel 中,例如“点击了玩具按钮”

我实现了两个jframe如何链接:

class SelectionListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        Object_Selection object_select = new Object_Selection(); //launch the second jframe
        object_select.setVisible(true);
    }
}

但是我在显示第一个jframe的jlabel的第二个jframe中按下哪个按钮时遇到了问题。

1 个答案:

答案 0 :(得分:2)

这里是一个文件的mcve(复制将整个代码粘贴到一个文件OpenDialogWindow.java中,然后运行),演示您要实现的目标:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class OpenDialogWindow {

    public static void main(String[] args) {

        JFrame frame = new JFrame("Main Window");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocation(400,250);
        frame.add(new Pane());
        frame.pack();
        frame.setVisible(true);
    }
}

class Pane extends JPanel{

    private static int WIDTH = 300, HEIGHT = 100, GAP  = 5;
    private final JLabel label;

    Pane() {
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        setLayout(new BorderLayout(GAP,GAP));

        label = new JLabel("", JLabel.CENTER);
        add(label, BorderLayout.PAGE_START);

        JButton show = new JButton("Show Dialog");
        show.addActionListener(e-> new Diag(new DiagButtonListener()));
        add(show, BorderLayout.PAGE_END);
    }

    class DiagButtonListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            label.setText("Diag button clicked !");
        }
    }
}

class Diag extends JDialog  {

    public  Diag(ActionListener listener) {

        setTitle("Dialog window");
        setSize(300, 150);
        setLocation(450,400);

        JButton btn = new JButton("Click");
        btn.addActionListener(listener);

        add(btn, BorderLayout.NORTH);

        JLabel help = new JLabel("Click button and see parent frame updted", JLabel.CENTER);
        add(help, BorderLayout.SOUTH);
        setVisible(true);
    }
}

enter image description here