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
相关产品推荐
相关产品推荐

