启动器和主要活动(在Java Swing应用程序中)

乐趣:

可能这是一个非常基本的问题,但这是MWE。我想在我的Swing应用程序启动时启动一些基本的设置活动(对话框等),例如,这可以是数据库连接信息,以便代码可以跨机器移植,等等,然后才启动实际的应用程序。下面的示例显示了这种情况:它询问什么是“ 2 + 2”,并且在提交答案时启动另一个JFrame

如何使启动主要活动的“ Launcher”活动消失?

此前发布的MWE,我试图有一个CardLayout这样的发射活动是“面孔”,这被通过实际活动所取代的一个(例如,使用CardLayoutfirstlast方法),但也有与布局不尊重的问题我的GridBagLayout设置(如果放在自己的设置中效果很好JFrame,但这是另一回事了)。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Launcher extends JFrame {

    private static class MainActivity extends JFrame {
        MainActivity() {
            this.getContentPane().add(new JLabel("Welcome to main activity"));
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    }

    JTextArea textArea;
    JButton button;

    Launcher() {
        textArea= new JTextArea("(2+2) mod 2= ?");
        button= new JButton("submit");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                String ans= textArea.getText();
                if ( ans.equals("0") ) {
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            JFrame frame= new MainActivity();
                            frame.pack();
                            frame.setVisible(true);
                        }
                    });
                }
            }
        });
        this.getContentPane().setLayout(new GridBagLayout());
        GridBagConstraints c= new GridBagConstraints();
        c.gridx= 0;
        c.gridy= 0;
        this.getContentPane().add(textArea,c);
        c.gridy= 1;
        this.getContentPane().add(button,c);
    }

    public static void main( String ... args ) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame= new Launcher();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
安德鲁·汤普森(Andrew Thompson):

更改:

frame.setVisible(true);

至:

frame.setVisible(true); 
Launcher.this.setVisible(false); // set the current window invisible!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建不显示在启动器列表中的主要活动

从 Android 应用程序 A,如何在应用程序 B 中打开非主要活动?

在 Swing 应用程序中丢失键盘和鼠标事件

如何从代码中关闭Java Swing应用程序

Java Swing应用程序中的服务层

在Java Swing应用程序中闪亮进度条

在Java Swing应用程序中实现WebSocket

在Java应用程序中刷新/重新加载图像(Swing)

NetBeans中未打开Java Swing应用程序

是否可以在 java swing 应用程序中运行 osmdroid

Java应用程序启动器不停留在Unity启动器中

您可以在WPF应用程序中托管Java swing应用程序吗?

应用程序重新启动,从背景,而不是恢复以前的状态的主要活动

启动应用程序时如何显示意图而不是主要活动

如何在Swing应用程序中混合使用Java Swing和JavaFX?

将启动器活动隐藏在Android的自定义启动器应用程序中的应用程序列表中

RuntimeException:无法在Android的主要活动中启动改装活动

即使清单具有主要活动,Android 中也缺少应用程序图标和名称

在我的基本计算器应用程序上的主要活动中出现错误

Android活动,服务,通知和应用启动器

Swing应用程序分析器

如何从非主要活动退出 Kotlin 应用程序

Android-扩展应用程序或运行主要活动

Android找不到应用程序的主要活动

启动器和LockScreen应用程序的清单文件

Java桌面应用程序:SWT与Swing

Java Swing JWindow应用程序崩溃

放大Java Swing应用程序

Java Swing的多窗口应用程序