wxw152132 2024-05-17 15:39 采纳率: 100%
浏览 2
已结题

Java图书管理系统界面设计乱码

运行点登录后界面乱码


package windows;

import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import util.GlobalVar;
import data.UserDao;
import entity.User;

public class Login extends PublicJFrame {
    /** 成员变量 */
    private JTextField tf_user;// 定义用户名文本框
    private JPasswordField pf_pass;// 定义密码框
    private JButton bt_login;// 定义登录按钮
    private JButton bt_close;// 定义关闭按钮

    /** 构造方法:用于 初始化“登录界面” */
    Login() {
        // 第1步:获取框架内容面板,并设置内容面板的布局为绝对布局
        this.getContentPane().setLayout(null);
        // 第2步:在框架的内容面板上,创建、 设置各个组件
        JLabel lb_user = new JLabel("用户名:");// 创建用户名标签
        // 设置用户名标签的放置位置和放置大小
        lb_user.setBounds(new Rectangle(100, 50, 70, 25));
        add(lb_user);// 将用户名标签添加到内容面板上

        tf_user = new JTextField("user");// 创建用户名文本框
        tf_user.setBounds(new Rectangle(170, 50, 110, 25));
        add(tf_user);

        JLabel lb_pass = new JLabel("密码:");// 创建密码标签
        lb_pass.setBounds(new Rectangle(100, 90, 50, 25));
        add(lb_pass);

        pf_pass = new JPasswordField("user");// 创建密码框
        pf_pass.setBounds(new Rectangle(170, 90, 110, 25));
        add(pf_pass);

        bt_login = new JButton("登录");// 创建登录按钮
        bt_login.setBounds(new Rectangle(100, 160, 80, 25));
        // 第3步:为按钮添加单击事件监听器
        // 为“登录”按钮添加单击事件监听器
        bt_login.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 调用“登录”按钮事件响应方法
                bt_login_actionPerformed();
            }
        });


        add(bt_login);

        bt_close = new JButton("关闭");// 创建关闭按钮
        bt_close.setBounds(new Rectangle(200, 160, 80, 25));
        // 为“关闭”按钮添加单击事件监听器
        bt_close.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 释放“登录界面”占用的屏幕资源,即关闭“登录界面”
                dispose();
            }
        });
        bt_login.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //调用“登录”按钮事件响应方法
                bt_login_actionPerformed();
            }
        });
        add(bt_close);

        // 第4步:设置“登录界面的标题、大小、位置等属性
        setTitle("王美丽20220548003图书管理系统--登录界面");// 设置“登录界面”标题
        setSize(380, 260);// 设置“登录界面”大小
        setResizable(false);// 设置“登录界面”大小不可改变
        setLocationRelativeTo(null);// 设置“登录界面”放置在屏幕中央
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置“登录界面”默认的关闭操作
    }

    /** 成员方法1: "登录"按钮的事件响应方法 */
    void bt_login_actionPerformed() {
        // 第1步:获得用户名和密码
        String name = tf_user.getText().trim();
        String pass = new String(pf_pass.getPassword()).trim();
        // 第2步:判断用户名或密码是否为空?
        if (name.equals("") || pass.equals("")) {
            // 为空,则显示对话框,给出提示信息,并返回
            JOptionPane.showMessageDialog(this, "用户信息不允许为空!");
            return;
        }
        // 第3步:调用方法,获取登录用户对象
        User user = UserDao.getUser(name, pass);
        // 第4步:判断登录用户对象是否存在?
        if (user != null) {
            // 第5步:存在,则保存当前登录用户对象,创建系统主界面,根据用户权限设置主界面,关闭登录界面
            GlobalVar.login_user = user;// 保存当前登录用户对象
//            System.out.println("进入系统主界面");
            MainFrame main = new MainFrame();// 创建系统主界面
            // 根据用户权限,设置需要显示的系统主界面内容
            main.setPurView((byte) user.getIs_admin());//此方法在系统主界面中定义
            this.dispose();// 释放“登录界面”占用的屏幕资源
        } else {
            // 第6步:不存在, 显示提示对话框,清空用户名和密码
            JOptionPane.showMessageDialog(this, "用户名或密码错误!");
            tf_user.setText("");// 清空用户名文本框
            pf_pass.setText("");// 清空密码框
            return;
        }
    }

    /** 主方法:“图书管理系统”入口 */
    public static void main(String args[]) {
        new Login();// 创建登录界面
    }
}




  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-17 15:39
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您提问的目的是解决在运行Java图书管理系统并点击登录后,界面出现乱码的问题。

    问题出现原因

    乱码问题通常由以下几个原因引起:

    1. 字符编码不一致:源代码文件的编码和运行环境中的编码不一致可能导致乱码。
    2. 字体问题:使用的字体不支持显示某些字符,或者在不同的操作系统上字体渲染不一致。
    3. Swing组件的本地化问题:Swing组件可能没有正确地使用本地化设置。
    4. 系统设置问题:操作系统的区域设置或语言设置可能与程序期望的设置不一致。

    问题解决方案

    1. 检查编码设置:确保您的源代码文件使用的是UTF-8编码,并且您的开发环境(如IDE)也设置为使用UTF-8编码。
    2. 设置Swing的默认字体:在程序启动时设置Swing的默认字体,确保所有组件都使用这个字体。
    3. 使用国际化和本地化:如果程序需要在不同的语言环境下运行,考虑使用资源文件进行本地化。
    4. 检查系统设置:确保操作系统的区域和语言设置与程序兼容。

    提供代码

    以下是一些针对上述建议的代码示例:

    import javax.swing.*;
    
    public class Login extends JFrame {
        // ... [省略其他代码] ...
    
        Login() {
            // ... [省略其他代码] ...
    
            // 设置Swing的默认字体
            Font defaultFont = new Font("Dialog", Font.PLAIN, 12);
            UIManager.put("swing.defaultfont", defaultFont);
    
            // ... [省略其他代码] ...
        }
    
        // ... [省略其他代码] ...
    
        public static void main(String[] args) {
            // 设置系统属性以使用UTF-8编码
            System.setProperty("file.encoding", "UTF-8");
    
            // 在事件分派线程中运行创建和显示GUI的代码
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new Login().setVisible(true);
                }
            });
        }
    }
    

    代码运行方式

    1. 将上述代码复制到您的Java开发环境中。
    2. 确保您的开发环境支持Swing并且已正确配置。
    3. 运行main方法。

    代码预期运行结果

    如果代码正确运行,您应该能够看到一个没有乱码的登录界面。

    推荐相关链接

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月17日

悬赏问题

  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!