You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing GUI点击按钮打开新JFrame窗口的实现问题咨询

Java Swing多窗口跳转修复方案

核心问题说明

  • 类名引用错误:你现有功能实现类为MatrixCalculator.java、ScientificCalculator.java,但事件监听器中实例化的是不存在的MatrixPanel、ScientificPanel类,是跳转失败的主要原因
  • 功能类未正确初始化窗口:如果你的两个功能类没有继承JFrame、没有配置窗口基础参数,调用setVisible(true)也无法正常弹出窗口
  • 主类存在冗余代码:重复调用setLayout(null)、setVisible(true),无实际作用

修复后代码

主类代码

首先补充必要的导入包,修正监听器中的类名引用,整理冗余配置:

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

public class Calculator {
    public static void main(String args[]) {
        JFrame mainFrame = new JFrame("2 in 1 Calculator");
        
        // 矩阵计算按钮配置
        JButton matrixBtn = new JButton("Matrix");
        matrixBtn.setBounds(50,100,95,30);
        mainFrame.add(matrixBtn);
        matrixBtn.addActionListener(e -> new MatrixCalculator().setVisible(true));

        // 科学计算按钮配置
        JButton sciBtn = new JButton("Scientific");
        sciBtn.setBounds(200,100,95,30);
        mainFrame.add(sciBtn);
        sciBtn.addActionListener(e -> new ScientificCalculator().setVisible(true));

        // 主窗口全局配置 仅需调用一次
        mainFrame.setLayout(null);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setSize(420,420);
        mainFrame.setVisible(true);
    }
}

功能类规范示例

以MatrixCalculator.java为例,需要继承JFrame并在构造方法中完成窗口初始化:

import javax.swing.*;

public class MatrixCalculator extends JFrame {
    public MatrixCalculator() {
        // 窗口基础配置
        setTitle("矩阵计算");
        setSize(400, 400);
        // 子窗口关闭仅销毁当前窗口,不退出整个应用
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        
        // 此处添加你自己的矩阵计算相关UI控件、业务逻辑代码
    }
}

ScientificCalculator.java的写法和上述示例一致,按需修改标题、大小及内部业务逻辑即可。

内容的提问来源于stack exchange,提问作者Ron R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:27:01