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

如何使JFrame和JMenubar不在公共静态void main(String[]args)中

仲孙飞文
2023-03-14

这是我第一次在这个网站上寻求帮助。我需要将JFrame和JMenubar从公共静态void main(String[]args)中移动。

    public static void main(String[] args){
    ResourceBundle res = ResourceBundle.getBundle("georglider.grandom.lang.lang");
    JFrame F = new JFrame(res.getString("GRandom"));
    F.setContentPane(new GRandom().JP1);
    F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    F.pack();
    F.setVisible(true);
    F.setSize(300,163);
    F.setResizable(false);

    JMenuBar gmenu = new JMenuBar();

    JMenu Mode = new JMenu("Режим");
    JMenu Display = new JMenu("После генерации");
    JMenu GenerateOptions = new JMenu("Опции для генерации");

    gmenu.add(Mode);
    gmenu.add(Display);
    gmenu.add(GenerateOptions);

    Icon dicon = new Icon() {
        @Override
        public void paintIcon(Component c, Graphics g, int x, int y) {

        }

        @Override
        public int getIconWidth() {
            return 0;
        }

        @Override
        public int getIconHeight() {
            return 0;
        }
    };

    //M = Menu | D = Display | GO = GenerateOptions
    JRadioButtonMenuItem Mnumbers = new JRadioButtonMenuItem("Генерировать числа",dicon,true);
    Mnumbers.setActionCommand("Mnumbers");
    JRadioButtonMenuItem Mstring = new JRadioButtonMenuItem("Генерировать заданные строки");
    Mstring.setActionCommand("Mstring");

    JRadioButtonMenuItem Ddefault = new JRadioButtonMenuItem("По умолчанию",dicon,true);
    Ddefault.setActionCommand("Ddefault");
    JRadioButtonMenuItem Dopen = new JRadioButtonMenuItem("Открыть файл");
    Dopen.setActionCommand("Dopen");
    JRadioButtonMenuItem Dshowhere = new JRadioButtonMenuItem("Показать здесь");
    Dshowhere.setActionCommand("Dshowhere");

    JRadioButtonMenuItem GOninclude = new JRadioButtonMenuItem("Не включать числа");
    Dshowhere.setActionCommand("GOninclude");

    Mode.add(Mnumbers);
    Mode.add(Mstring);
    Display.add(Ddefault);
    Display.add(Dopen);
    Display.add(Dshowhere);
    GenerateOptions.add(GOninclude);

    F.setJMenuBar(gmenu);
}

这是我需要从公共静态void main(String[]args)移动的代码

我尝试将其移到GRandom()类(它是主类),并使公共静态void main(String[]args)看起来如下所示:

public static void main(String[] args)
{
    JFrame.setDefaultLookAndFeelDecorated(true);
    new JMenuTest();
}

请帮帮我,如何将它移到GRandom()类,或者制作另一个类

共有1个答案

李森
2023-03-14

这里有一个方法。

它有助于将代码分离为方法。这样,您就可以一次专注于GUI的一部分。

必须按照特定的顺序调用JFrame方法。这是我在所有Swing应用程序中使用的顺序。

import java.awt.Component;
import java.awt.Graphics;
import java.util.ResourceBundle;

import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.SwingUtilities;

public class JFrameExample implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new JFrameExample());
    }

    @Override
    public void run() {
//      ResourceBundle res = ResourceBundle.getBundle(
//              "georglider.grandom.lang.lang");
//      JFrame frame = new JFrame(res.getString("GRandom"));
        JFrame frame = new JFrame("JFrame Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setJMenuBar(createMenu());

        frame.pack();
        frame.setSize(400, 200);
        frame.setResizable(false);
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    private JMenuBar createMenu() {
        JMenuBar gmenu = new JMenuBar();

        JMenu Mode = new JMenu("Режим");
        JMenu Display = new JMenu("После генерации");
        JMenu GenerateOptions = new JMenu("Опции для генерации");

        // M = Menu | D = Display | GO = GenerateOptions
        JRadioButtonMenuItem Mnumbers = 
                new JRadioButtonMenuItem("Генерировать числа", 
                        createIcon(), true);
        Mnumbers.setActionCommand("Mnumbers");
        JRadioButtonMenuItem Mstring = 
                new JRadioButtonMenuItem(
                        "Генерировать заданные строки");
        Mstring.setActionCommand("Mstring");

        JRadioButtonMenuItem Ddefault = 
                new JRadioButtonMenuItem("По умолчанию", 
                        createIcon(), true);
        Ddefault.setActionCommand("Ddefault");
        JRadioButtonMenuItem Dopen = 
                new JRadioButtonMenuItem("Открыть файл");
        Dopen.setActionCommand("Dopen");
        JRadioButtonMenuItem Dshowhere = 
                new JRadioButtonMenuItem("Показать здесь");
        Dshowhere.setActionCommand("Dshowhere");

        JRadioButtonMenuItem GOninclude = 
                new JRadioButtonMenuItem("Не включать числа");
        Dshowhere.setActionCommand("GOninclude");

        Mode.add(Mnumbers);
        Mode.add(Mstring);
        Display.add(Ddefault);
        Display.add(Dopen);
        Display.add(Dshowhere);
        GenerateOptions.add(GOninclude);

        gmenu.add(Mode);
        gmenu.add(Display);
        gmenu.add(GenerateOptions);

        return gmenu;
    }

    private Icon createIcon() {
        Icon dicon = new Icon() {
            @Override
            public void paintIcon(Component c, 
                    Graphics g, int x, int y) {

            }

            @Override
            public int getIconWidth() {
                return 0;
            }

            @Override
            public int getIconHeight() {
                return 0;
            }
        };

        return dicon;
    }

}
 类似资料:
  • 我是java新手,在尝试创建一个小蛇类型的游戏后,出现了错误 错误:在类game.gamePanel中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)“

  • 问题内容: 在下面的摘录中,您如何向 初学者 很好地解释的含义和用法? 问题答案: 我将向初学者介绍有关Main函数的Wiki文章,然后对此进行补充。 Java只开始运行具有特定签名的程序,并且人们可以将签名视为自己的名字-这就是Java如何分辨别人的签名和true 的区别。 是s 的集合,以空格分隔,可以在终端上将其键入程序中。初学者不会多次使用此变量,但总是以防万一。

  • 问题内容: 和之间有什么区别? 例如 : 要么 问题答案: 尽管您 确实 希望遵守约定,但在功能上没有什么区别(字节码将 完全相同 ),请访问JLS-8.3.1。场修饰符: __ 这将是奇怪的,看.. 我也建议您访问checkstyle。 编辑: 从同一页面链接到该部分: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls

  • 如何调用从公共静态空白到非静态的公共空白碎片类?或者有另一种方法在(listViewHolder.dot.setOnClickListener(new View.OnClickListener()和公共无效搜索3())

  • 若需要在 San CLI UI内建的http服务器上暴露一些静态文件,例如:为自定义视图指定图标。可以通过在插件包根目录里可选的放置一个public文件夹,这个文件夹里的任何文件都会暴露至 /_plugin/:id/* 的http路由。 例如,如果将 x-logo.png 文件放置到 san-cli-ui-widget-x/public/ 文件夹,那么 cli-ui 加载插件的时候可以通过 /_p