重写paintComponent出错,求解!

weidu23 2013-04-21 02:25:31
首先请看代码:

package Test_Rectangle2D;

import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;

public class cla_Rectangle2D
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable() {
public void run()
{
DrawFrame frame = new DrawFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class DrawFrame extends JFrame
{
private static class Coord_And_Size
{
/**
* 矩形坐标:左上角坐标
*/
int r_pos_x ;
int r_pos_y ;
/**
* 矩形大小:长、宽
*/
int r_size_width ;
int r_size_height ;
};
private static Coord_And_Size aim = new Coord_And_Size();
/**
* 设置默认图形坐标和长宽比例
*/
private void DefaultCoordAndSize()
{
aim.r_pos_x = 100 ;
aim.r_pos_y = 100 ;
aim.r_size_height = 250 ;
aim.r_size_width = 250 ;
}
/**
* 内容窗格容器对象
*/
Container con = this.getContentPane();

public DrawFrame()
{
DefaultCoordAndSize();
// 以下这句没用,是我出问题后抱着试试的态度写的,这句可以删去
// con.paintComponents(getGraphics());
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
Graphics2D g2 = (Graphics2D)g ;
Rectangle2D rect = new Rectangle2D.Double(
aim.r_pos_x, aim.r_pos_y, aim.r_size_width, aim.r_size_height);
g2.draw(rect);
}
}


一般人直接在窗格组件里面重写paintComponent(g);然后把窗格组件放到框架的内容窗格里。

我这一次直接在框架里面覆写paintComponent(g),结果代码显示不出我的“矩形”。

我想请问各位大神,错在何处,怎么直接改?
【特别说明:我并不打算在组件里写好paintComponent(),再把组件放入框架的内容窗格中】

请教,谢谢!!!
...全文
394 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
做一只蝴蝶 2015-12-20
  • 打赏
  • 举报
回复
引用 11 楼 weidu23 的回复:
我已经懂了 ...
大哥是为什么。。我最近也在纠结类似的问题
weidu23 2013-04-25
  • 打赏
  • 举报
回复
我已经懂了 ...
liuh2013 2013-04-22
  • 打赏
  • 举报
回复
weidu23 2013-04-21
  • 打赏
  • 举报
回复
引用 8 楼 Inhibitory 的回复:
画图不要在JFrame里画,而是在JPanel里画,然后把JPanel添加到JFrame
的确,我见过的所有画图都在JPanel上 。 但我的确想在JFrame上绘制! 于是写了上面这个代码。 不是转牛角尖,而是想通过编程更了解swing 。 请问,我怎么样改才能显示在JFrame中 ?
Inhibitory 2013-04-21
  • 打赏
  • 举报
回复
画图不要在JFrame里画,而是在JPanel里画,然后把JPanel添加到JFrame
liuh2013 2013-04-21
  • 打赏
  • 举报
回复
楼主的学习之路还很长呀。
weidu23 2013-04-21
  • 打赏
  • 举报
回复
引用 6 楼 fangmingshijie 的回复:
空指针就是低级错误了。
恩,你说的很对! 我先显示,后传入参数,空指针异常问题就得到了解决 但是,依然不能显示!
Inhibitory 2013-04-21
  • 打赏
  • 举报
回复
给你具体的截图分析一下为什么出错


  • 打赏
  • 举报
回复
空指针就是低级错误了。
weidu23 2013-04-21
  • 打赏
  • 举报
回复
引用 2 楼 Inhibitory 的回复:
给你具体的截图分析一下为什么出错
现在重写好了!!! 突然发现,没有调用paintComponents() @Override public void paintComponents() { ... } 于是我在main函数里面paintComponents(frame.getGraphics()); ,然后就爆出了NullPointException! why? 求教!!!
weidu23 2013-04-21
  • 打赏
  • 举报
回复
比较晚了,怕帖子沉掉,自己先顶一下!!!
weidu23 2013-04-21
  • 打赏
  • 举报
回复
引用 2 楼 Inhibitory 的回复:
给你具体的截图分析一下为什么出错
首先要说的是:我override错了! 应该是 public void paintComponents(Graphics g),我少了个 's' , 但即便改过来了,还是不行,求教! 我想了很久,没通!!!
下载代码方式:https://pan.quark.cn/s/054d920fa1d1 《学生博客信息管理系统详解》 学生博客信息管理系统是一款针对教育环境而设计的简化博客平台,其主要目的在于协助教师进行学生博客信息的监控与管理,并对学生的作业得分进行记录。该系统具备方便的查询和访问特性,能够显著提升教学活动中的信息传递效率,并且为学生构建了一个展示个人能力、交流知识的平台。 1. **系统架构** 学生博客信息管理系统大概采用了常规的三层架构,涵盖了表现层(用户交互界面)、业务逻辑层(负责业务规则的执行)以及数据访问层(负责与数据库进行数据交换)。此类架构有利于代码的规范化管理与维护,有助于提升系统的可扩展性与代码复用率。 2. **功能模块** - **用户管理**:包含注册、登录、个人资料维护等功能,旨在保障用户能够安全地使用系统。 - **博客发布**:学生能够建立、修改和移除自己的博客文章,内容形式支持文本、图片、链接等多样化展示。 - **博客查询**:用户可根据关键词、作者等条件进行检索,以快速定位所需的博客内容。 - **作业评分**:教师可以检视学生的作业,实施评分与评语,系统将自动计算每次作业的平均分数与总得分。 - **统计分析**:系统提供数据统计功能,例如学生作业成绩的分布情况、活跃度最高的博主排行等,为教学决策提供数据依据。 3. **技术选型** 从提供的文件"博客管理.jar"可以推断,该系统可能基于Java语言开发,因为.jar是Java程序的可执行文件格式。同时,"博客管理_lib"可能包含了系统运行所需的第三方库资源,这些库资源或许包含了Spring框架、Hibernate用于数据持久化处理,或MyBatis用于数据库交互,...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧