当前位置: 首页 > 知识库问答 >
问题:

将JFrame输出存储到主程序中的字符串中

龚俊捷
2023-03-14

在我看来,到目前为止,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_。

这可能吗?为了实现这一点,我需要在gui_frame的actionPerformed方法中插入什么?

共有1个答案

阎伟志
2023-03-14

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

> < li>

在主类中将ActionListener实现为lambda(顺便说一下,应该大写,即“main”),并将lambda传递给gui_frame类(同样,应该是“GuiFrame”),并让GuiFrame类将侦听器应用于按钮

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

在GuiFrame类中存储最后单击的按钮的名称,并让主类在需要时请求它(如果它不需要知道按钮何时被单击)。

 类似资料:
  • 问题内容: 正在尝试在Python中进行系统调用,并将输出存储到我可以在Python程序中操作的字符串中。 我已经尝试了一些方法,包括此处的一些建议: 问题答案: 在Python 2.7或Python 3中 Popen你可以使用函数将命令的输出存储在字符串中,而不是直接创建对象: 在Python 2.4-2.6中 使用方法。 是你想要的。 有关其他答案的重要说明 请注意我如何传递命令。该示例提出了

  • 问题内容: 如何获取并将其存储到变量中?我想在程序中使用稍后生成的字符串。 我对Java还是很陌生,所以我不太熟悉我认为它将是解决方案。或者,如果您有其他任何想法,请告诉我。谢谢 问题答案: 遵循以下原则 应该是您所需要的。 相关文件: StringWriter 打印作家 可投掷

  • 我正在创建一个使用服务代理运行多个模块的流程。这些模块将在流程结束时返回一个字符串,初始服务代理调用将返回并打印该字符串。但是,我来自流程构建器的进程没有返回我的字符串。我放置了print语句来告诉我不同模块何时运行,它打印正确的答案,但不会将其作为字符串返回给服务代理。 服务经纪人 翻译 文本代理 SB被赋予参数{"Trans,"german.txt, dog,="},它将[1]字符串传递给翻译

  • 我有一个名为samparr的数组[字符串],其中包含一些值,我希望它存储为输出文件。 就像, 但RDD不是数组吗[字符串]

  • 我想为Spring Cache执行以下操作。 > 检查传递的字符串是否存在于缓存中。如果存在,则返回true,如果不存在,则添加到缓存;checkInCache(字符串str) 从缓存逐出字符串(String str) 尝试如下 @组件公共类FlightCache{ 并在配置类上添加了@EnableCaching注释。 错误:

  • 问题内容: 我有一个函数的返回类型为VOID,它直接在控制台上打印。 但是,我需要字符串形式的输出,以便可以对其进行处理。 由于我无法使用返回类型为VOID的函数进行任何更改,因此我不得不将该输出重定向到字符串。 如何在JAVA中重定向它? 关于将stdout重定向到字符串有很多问题,但是它们仅重定向从用户获取的输入,而不重定向某些函数的输出… 问题答案: 如果功能正在打印到,则可以使用更改为你提