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

JAVA GUI代码未按预期运行求助:附书本摘抄代码

修复你的Java GUI代码问题

嘿,我帮你揪出了代码里几个导致无法正常运行的小问题,咱们一步步修正:

问题1:核心绘制方法拼写错误

你在MyDrawPanel里写的painComponent少了个字母t!Swing里负责组件绘制的标准方法是paintComponent,拼写错了的话,你的绘制逻辑根本不会被执行。

问题2:方法参数不完整且缺少父类调用

你写的Gra...应该是Graphics g,完整的方法签名必须包含这个参数。另外,在重写paintComponent时,一定要先调用super.paintComponent(g),不然会出现背景不刷新、绘制残留等异常。

问题3:组件添加的参数顺序搞反了

Swing的add方法中,带布局约束的重载是先传组件,再传约束,你写的frame.getContentPane().add(BorderLayout.CENTER, drawPanel);顺序反了,正确的写法应该是把组件放在前面。


修正后的完整代码

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

public class SimpleGui3C {
    JFrame frame;

    public static void main(String[] args) {
        SimpleGui3C gui = new SimpleGui3C();
        gui.go();
    }

    public void go() {
        frame = new JFrame("My own code");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MyDrawPanel drawPanel = new MyDrawPanel();
        // 修正add方法的参数顺序
        frame.getContentPane().add(drawPanel, BorderLayout.CENTER);
        frame.setSize(420, 300);
        frame.setVisible(true);
    }
}

class MyDrawPanel extends JPanel {
    // 修正方法名和参数,添加父类方法调用
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // 这里可以添加你的绘制逻辑,比如画个红色矩形
        g.setColor(Color.RED);
        g.fillRect(20, 20, 100, 100);
    }
}

你可以把上面的代码运行试试,应该就能正常显示带红色矩形的窗口啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:03