社区
Java SE
帖子详情
关于Swing的绘图(新手问题,必给分!)
andrew80
2006-07-28 07:47:36
本人新手.
想请教如何用Swing绘图(如,直线,矩形等).
Swing的jpanel与Graphic对象是什么关系?
我想用Swing的双缓冲,绘制图形,不知道该怎么作?那位指点一下!
多谢了
...全文
562
14
打赏
收藏
关于Swing的绘图(新手问题,必给分!)
本人新手. 想请教如何用Swing绘图(如,直线,矩形等). Swing的jpanel与Graphic对象是什么关系? 我想用Swing的双缓冲,绘制图形,不知道该怎么作?那位指点一下! 多谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
andrew80
2006-08-02
打赏
举报
回复
第二个程序:不能擦除
package swing;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class Applet1 extends Applet {
private boolean isStandalone = false;
ClassPanel mypanel = new ClassPanel();
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//Construct the applet
public Applet1() {
}
//Initialize the applet
public void init() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
this.setLayout(null);
this.add(mypanel,null);
mypanel.setBounds(new Rectangle(0, 10, 450, 255 ));
}
//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}
//Get parameter info
public String[][] getParameterInfo() {
return null;
}
void jButton1_mouseClicked(MouseEvent e) {
this.mypanel.start();
}
}
class ClassPanel extends JPanel implements Runnable
{
int i=0;
Thread panelthread=null;
public void start()
{
if (panelthread==null)
{
panelthread=new Thread (this);
panelthread.start();
}
}
public void stop()
{
panelthread.stop();
panelthread=null;
}
public void run()
{
while(true)
{
repaint();
try{Thread.sleep(100);}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
g.drawString(Integer.toString(i),30,240);
i++;
}
}
andrew80
2006-08-02
打赏
举报
回复
第一个程序:可以正常显示
package drawline;
import java.awt.*;
import java.applet.*;
import java.util.Date;
import javax.swing.*;
public class Applet1 extends Applet implements Runnable
{
private boolean isStandalone = false;
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
int i=0;
Thread clockthread=null;
public void start()
{
if (clockthread==null)
{
clockthread=new Thread (this);
clockthread.start();
}
}
public void stop()
{
clockthread.stop();
clockthread=null;
}
public void run()
{
while(true)
{
repaint();
try{Thread.sleep(100);}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
g.drawString(Integer.toString(i),30,240);//将它打印出来!
i++;
}
public Applet1() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
}
}
andrew80
2006-08-02
打赏
举报
回复
多谢大家!问题解决了一定给分,不够再加,不好意思只能用分来谢了呵呵。
我首先在一个clock程序的基础上实现了我需要的画曲线的功能,因为要相应界面,所以我使用了多线程,当我用swing的jpanel时,发现不能实时擦除上一次迭代画的界面,为了清楚的说明问题,我把程序简化为用graphics显示一个累加的变量。第一个程序可以正常的显示,擦除,再显示;而第二个使用swing的程序则累加显示,不只那位大哥可以指点一下。
to UnAgain():我就是看了你(翻译?)的文章才知道Swing支持双缓冲,可以由于新手基础太差,看不太懂,所以还请多指教。
cuij7718
2006-08-01
打赏
举报
回复
可以看看
http://www.blogjava.net/sunfruit/archive/2006/02/19/31501.html
先执行'演示',在线看看效果,会弹出一个证书认证点击'Y'就行了,不会有问题的
andrew80
2006-07-31
打赏
举报
回复
我消化一下,等我搞定了就结贴,谢谢大家
huataixiang19810225
2006-07-31
打赏
举报
回复
C:\Program Files\Java\jdk1.5.0_04\demo\applets\GraphicsTest
看了没有,调试了没与?
huataixiang19810225
2006-07-31
打赏
举报
回复
C:\Program Files\Java\jdk1.5.0_04\demo\applets\GraphicsTest
一大堆,不知道你看到了没有?调试过了没有?
sunqihui24
2006-07-31
打赏
举报
回复
正在做swing的程序,andrew80 (竹林) ,趁你的东风,也问个问题:
即 可不可以用graphics 在jpanel上以一定的角度也来写一行数据,而不是水平的写?
UnAgain
2006-07-31
打赏
举报
回复
哦,原来是你啊,呵呵
你出了100分,我只回答了两句话,值多少分啊?
^_^
Moon
2006-07-30
打赏
举报
回复
关注
我也在做图形学的作业……
Pigwen
2006-07-29
打赏
举报
回复
Graphics相当于笔,JPanel相当于纸,用笔(Graphics)在纸(JPanel)上画你想要的东西
diggywang
2006-07-29
打赏
举报
回复
要说起来就多得去了,还是建议楼主好好看看java2d,说的很详细的
UnAgain
2006-07-29
打赏
举报
回复
关于双缓冲,你可以参考一下这篇文章--“AWT和Swing中的绘画”(http://blog.csdn.net/UnAgain/archive/2006/05/13/727474.aspx)
JaboR
2006-07-29
打赏
举报
回复
Swing的JComponent都是已经实现好了双缓冲,不用像在awt中得自己去实现,你只要在画图的时候,调用一下父类的同一个方法就行了.如在JPanel中画图,用方法
protected void paintComponent(Graphics g) {
super.paintComponent(g); // 调用父类的方法,这个方法已经实现了双缓冲,如果你 不调用,那么你的程序就没有双缓冲.一般情况下看不出来,但是在有动画的情况下,如果不调用这个方法,你画出来的东西很多地方就会是一片黑,乱七八糟的.
g.drawOval(0, 0, 100, 100); // 画一个圆
}
java
Swing
练习画图板
非常适合加强java基础的人来练手 完整的画图板项目,模仿win10自带画图板写的 很有学习价值
java
swing
写的推箱子游戏
用Java写的推箱子小游戏,很适合
新手
,难度不是太大,有兴趣的考验下载看看
Java-
新手
入门必学小游戏雷霆战机.zip
喜欢Java
java坦克大战单机版_
新手
必备
坦克大战单机版,
新手
入行必学。代码中运用线程,集合,
绘图
,面向对象等知识。
新手
党!JAVA俄罗斯方块源码
本代码可用于java初学者去参考学习,本源码还有待完善。主要bug是当方块堆积置顶时方块任然会下落。
Java SE
62,629
社区成员
307,262
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章