将JFrame输出存储到主程序中的String中

时间:2017-03-31 18:53:53

标签: java swing jframe actionlistener

在我看来,到目前为止,JFrame中发生的一切都在JFrame中。 (可能应该进入JavaFX而不是Swing)

假设你有一个JFrame类(gui_frame),它利用JButtons和一个名为HandlerClass的嵌套类来实现ActionListener,如下所示:

public class gui_frame extends JFrame {
    private JButton button1;
    public gui_frame() {
         super("Title");
         setLayout(new FlowLayout());

         button1 = new JButton("Hello");
         add(button1);

         HandlerClass handler = new HandlerClass();
         button1.addActionListener(handler);
    }

   private class HandlerClass implements ActionListener{
          public void actionPerformed(ActionEvent e){
          //insert code here
          }
   }
}

然后你有了主要代码,它调用了这个gui_frame类。

public class main {
    public static void main(String[] args){
        //insert some unrelated code here

        gui_frame gf = new gui_frame();
        gf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        gf.setSize(400,75);
        gf.setVisible(true);

        String button_name;
        //insert some code that uses button_name           
    }
}

基本上,我试图将按钮的名称存储在JFrame类gui_frame中(在本例中为#34; Hello"),在点击之后,进入主类的String button_name, 在运行时。

这可能吗?我需要在gui_frame中插入actionPerformed方法,才能实现这一目标?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点:

  1. 将ActionListener实现为主类中的lambda(btw,应该大写,即" Main"),并将lambda传递给gui_frame类(同样,应该是& #34; GuiFrame"),并让GuiFrame类将监听器应用于按钮

  2. 为GuiFrame类创建一个接口,用于通知Main类按钮已被单击(以及按钮的名称)。让Main类实现该接口,然后将Main的实例传递给GuiFrame类。然后让GuiFrame的ActionListener调用Main类中的方法'通知界面。

  3. 将最后点击的按钮的名称存储在GuiFrame类中,并让Main类在需要时请求它(如果它不需要知道何时单击该按钮)。 / p>