jframedesigner问题,swing菜单条中文乱码

就是在使用jframedesigner创建菜单条是时候,为啥这菜单条乱码呀?

img

img

首先确认你 项目文件 的编码是啥, 都调整成 utf-8
如果这些都没问题,在启动类的 配置 vm 选项上 加上 -Dfile.encoding=UTF-8 再试试

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7718143
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Java图形用户界面——GUI设计、Swing类和JFrame类创建图形界面窗体
  • 除此之外, 这篇博客: [Java进阶] Swing两万字大总结一(超详细教程,这不得收藏一波)中的 🐱 JFrame 窗体 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • JFrame 窗体是一个容器,它是 Swing 程序中各个组件的载体,因此,可以将 JFrame 看作是承载这些 Swing 组件的容器。

    在开发应用程序时,可以通过继承 java.swing.JFrame 类来创建一个窗体,然后再在窗体中添加组件,同时为组件设置事件。由于该窗体继承了 JFrame 类,所以它拥有最大化、最小化和关闭按钮。

    下面将详细讲解 JFrame 窗体在 Java 应用程序中的使用方法。

    JFrame 在程序中的语法格式如下:

    JFrame frame = new JFrame(title);
    Container container = frame.getContentPane();
    

    frameJFrame 类的对象。
    containerContainer 类的对象,可以使用 JFrame 对象调用 getContentPane() 方法获取。

    我们应该有这样的一个概念,就是 Swing 组件的窗体通常与组件和容器相关,所以在 JFrame 对象创建完成后,需要调用 getContentPane() 方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常这个容器用来包含和显示组件。如果需要将组件添加至容器,那么可以使用来自 Container 类的 add() 方法进行设置,示例代码如下:

    container.add(new JButton("按钮"));                     //JButton按钮组件
    

    在容器中添加组件后,也可以使用 Container 类的 remove() 方法将这些组件从容器中删除,示例代码如下:

    container.remove(new JButton("按钮"));
    

    我们来看看下面这个实例,该实例使用 JFrame 对象创建了一个窗体,然后在其中添加一个组件。

    在项目中创建 MyFrame 类,该类继承 JFrame 类成为窗体类,然后在该类中创建标签组件,并添加到窗体界面中。

    import java.awt.*;
    import javax.swing.*;
    
    public class MyFrame extends JFrame {                       	//定义一个类继承JFrame类
    
        public void CreateJFrame(String title) {                	//定义一个CreateJFrame()方法
    
            JFrame frame = new JFrame(title);                     	 //实例化一个JFrame对象
            Container container = frame.getContentPane();          	// 获取一个容器
            container.setBackground(Color.CYAN);                  	//设置容器的背景颜色
    
            JLabel jl = new JLabel("这是一个JFrame窗体");        	//创建一个JLabel标签
            jl.setHorizontalAlignment(SwingConstants.CENTER);       //使标签上的文字居中
            container.add(jl);                                      // 将标签添加到容器中
    
    
            frame.setVisible(true);                                //使窗体可视
            frame.setBounds(400,300,400, 300);  				   //设置窗体显示位置和大小
            frame.setDefaultCloseOperation(EXIT_ON_CLOSE);         //设置窗体关闭方式
        }
    
        public static void main(String args[]) {
            //在主方法中调用createJFrame()方法
            new MyFrame().CreateJFrame("一个JFrame窗体");
        }
    }
    

    运行本实例程序,结果如下所示:
    在这里插入图片描述

    上述程序中的 MyFrame 类继承了 JFrame 类,在 CreateJFrame() 方法中实例子化 JFrame 对象。JFrame 类的常用构造方法包括下面两种形式。

    public JFrame()
    
    public JFrame(String title)
    

    JFrame 类中的两种构造方法分别为无参的构造方法与有参的构造方法:

    第一种形式的构造方法创建一个初始不可见、没有标题的新窗体。

    第二种形式的构造方法在实例化该 JFrame 对象时,创建一个不可见但具有标题的窗体。

    我们可以使用 JFrame 对象调用 show() 方法使窗体可见,但是这个方法早已被新版 JDK 弃用,现在通常使用 setVisible(true) 方法使窗体可见。

    同时,可以使用 setBounds(x,y,width, height) 方法设置窗体显示位置和大小,其中 xy 为窗体左上角坐标,widthheight 为窗体的宽和高。

    创建窗体后,需要给予窗体一个关闭方式,可以调用 setDefaultCloseOperation() 方法关闭窗体。

    Java为关闭窗体提供了多种方式,常用的有4种方式,分别为:DO_NOTHING_ON_CLOSEDISPOSE_ON_CLOSEHIDE_ON_CLOSEEXIT_ON_CLOSE,这几种操作实质上是将一个 int 类型的常量封装在 javax.swing.WindowConstants 接口中。

    具体含义如下:

    关闭窗体方式描述
    EXIT_ON_CLOSE退出应用程序,默认窗口关闭
    DO_NOTHING_ON_CLOSE什么都不做就将窗体关闭
    DISPOSE_ON_CLOSE移除窗口的默认窗口关闭操作
    HIDE_ON_CLOSE隐藏窗口的默认窗口关闭