在主程序中将JFrame输出存储到字符串
在我看来,到目前为止,JFrame中发生的所有事情都保留在JFrame中。 (也许应该得到到JavaFX,而不是摇摆)在主程序中将JFrame输出存储到字符串
比方说,你有一个JFrame类(gui_frame)利用与实现的ActionListener,嵌套类名为HandlerClass Jbutton将如下图所示:
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按钮的名称(在这种情况下,“你好”),后被点击,进入字符串BUTTON_NAME在主类,运行期间时间。
这可能吗?我必须插入到gui_frame的actionPerformed方法中,才能实现这个目的?
有几个方法,你可以这样做:
实现ActionListener作为主类拉姆达(顺便说一句,应当予以资本化,即“主”),并通过lambda来gui_frame类(同样应该是“GuiFrame”),并且让GuiFrame类将侦听器应用于按钮
为GuiFrame类创建一个接口,用于通知Main类该按钮已被点击(和按钮的名称)。让Main类实现该接口,然后将Main的实例传递给GuiFrame类。然后让GuiFrame的ActionListener调用Main类的接口中的方法来通知它。
将最后点击的按钮的名称存储在GuiFrame类中,并让Main类在需要时请求它(如果它不需要知道单击按钮的时间)。
感谢您的建议。将尝试所有人看看哪个更有效。 –
*“在我看来,到目前为止,JFrame中发生的所有事情都停留在JFrame中。”*错!这取决于代码。 'JFrame'不像拉斯维加斯。这些代码差异以'public class gui_frame extends JFrame {'**}开头,除非改变其方法的功能,否则不要扩展JFrame **。只需使用一个框架的实例。在其中放置一个按钮,该按钮具有属于'button_name'属性范围内的操作侦听器并更新所执行操作的属性。 *“(可能应该已经进入JavaFX而不是Swing)”*不,最好学习如何编程.. –
..否则使用Java-FX会遇到同样的问题。顺便说一下,一个框架是非模态的,所以''button_name'在到达//插入一些使用button_name的代码时仍然未被初始化。你在这里是“编码魔术”。这从来没有工作。 –
感谢您的模式解释。如果这是个问题,我会尝试从现在开始使用JDialog。 –