哪位高手看看什么问题?

明月撒 2005-03-20 08:25:59
package demo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import demo.*;//WindowsCloser;

public class drawdemo extends JPanel{

public void drawdemo(Graphics g){
super.paintComponent(g);
g.setColor(setForeground(Color.black));
g.drawString("hi",10,20);
g.fillRect(10,25,30,20);
}

public static void main(String args[]){
JFrame frame=new JFrame("Drawing panel");
drawdemo panel=new drawdemo();
frame.getContentPane().add(panel);
frame.setSize(600,450);
frame.setVisible(true);
frame.addWindowListener(new WindowsCloser());

为何只看到frame而看不到panel中的内容?
}
}
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ufouciyxtixu 2005-03-21
  • 打赏
  • 举报
回复
修改后的代码`
你错了那里`自己去思考`
package demo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import demo.*;//WindowsCloser;

public class drawDemo extends JPanel{

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("hi",10,20);
g.fillRect(10,25,30,20);
}

public static void main(String args[]){
JFrame frame=new JFrame("Drawing panel");
drawDemo panel=new drawDemo();
frame.getContentPane().add(panel);
frame.setSize(600,450);
frame.setVisible(true);
}
}
nwsl 2005-03-21
  • 打赏
  • 举报
回复
public void drawdemo(Graphics g){

改成

public void paintComponent(Graphics g)

不然这一句根本不可能执行.
vision2000 2005-03-21
  • 打赏
  • 举报
回复
这是什么设计模式啊?
Graphics g g对象每次都不同啊。


建议:
Class Frame
public void paint(Graphics g){
drawdemo.setGraphics(g);
drawdemo.repaint();
}
vision2000 2005-03-21
  • 打赏
  • 举报
回复
这是什么设计模式啊?
Graphics g g对象每次都不同啊。


建议:
Class Frame
public void paint(Graphics g){
drawdemo.setGraphics(g);
drawdemo.paint();
}
明月撒 2005-03-21
  • 打赏
  • 举报
回复
drawdemo panel=new drawdemo();
这一句不正确吧,你的构造方法中是有参数的.应该传一个参数进去
如果传送一个Graphics g会报错:
--------------------Configuration: <Default>--------------------
E:\small\drawdemo.java:19: ')' expected
drawdemo panel=new drawdemo(Graphics g);
^
E:\small\drawdemo.java:19: cannot resolve symbol
symbol : variable Graphics
location: class demo.drawdemo
drawdemo panel=new drawdemo(Graphics g);
^
2 errors

Process completed.

是不是因为Graphics是个虚拟类不能够产生一个实体?
vgvg(java)(要做就做最好) 是对的,程序只执行默认的构造函数。谢了
King_Style(杰缘) 提到的panel也要设置一下setVisible(true),没有必要,super.paintComponent(g);g.setColor(setForeground(Color.black));已经设置了.不过g.setColor(setForeground(Color.black))要改为g.setColor(getForeground());因为setForeground(Color.black)返回void,而这里需要设一个值。
cyicecream(为了升仙(星)到处UP)题的建议对程序好像没什么作用。
谢谢诸位:)
cyicecream 2005-03-21
  • 打赏
  • 举报
回复
frame.getContentPane().add(panel, BorderLayout.CENTRE);
加上这句就能够显示了.GOOD LUCKY
vgvg 2005-03-21
  • 打赏
  • 举报
回复
public void drawdemo(Graphics g){

改成

public void paintComponent(Graphics g)

不然这一句根本不可能执行.
King_Style 2005-03-21
  • 打赏
  • 举报
回复
好久没有接触Swing了,我觉得是不是panel也要设置一下setVisible(true)呢?
asa516 2005-03-21
  • 打赏
  • 举报
回复
drawdemo panel=new drawdemo();
这一句不正确吧,你的构造方法中是有参数的.应该传一个参数进去

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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