当前位置:  技术问答>java相关

在线等待!急!多谢!一个画图的程序,输入两个坐标值,以此为对角线顶点坐标做矩形。。。高手给看看。

    来源: 互联网  发布时间:2015-10-16

    本文导语:  /*下列代码是一个画图的程序,在四个文本框中分别输入四个数字(两对坐标) 可以以此为坐标画出一个矩形,可是本程序出了问题,可以调试通过但无法画出图形 ,百思不得其解,请高手指教,多谢,在线等待,...

/*下列代码是一个画图的程序,在四个文本框中分别输入四个数字(两对坐标)
可以以此为坐标画出一个矩形,可是本程序出了问题,可以调试通过但无法画出图形
,百思不得其解,请高手指教,多谢,在线等待,多谢。*/

import java.awt.*;
import java.awt.event.*;
import java.lang.*;
/*定义一个画图的类*/
class SubPanel extends Panel
{
int l1,l2,l3,l4;
public SubPanel(int l1,int l2,int l3,int l4)
{
    this.l1=l1;
    this.l2=l2;
    this.l3=l3;
    this.l4=l4;
}

public void Draw(Graphics g)
{

        System.out.println(g);// 测试语句,可打印出;
        System.out.println(l1+","+l2+","+l3+","+l4);// 测试语句,可打印出;
        g.drawRect(l1,l2,l3,l4);
        System.out.println("1111");

}
}


public class draw implements ActionListener
{
int i1, i2,i3,i4;

Frame f=new Frame("drawing");
TextField tf1=new TextField(5);
TextField tf2=new TextField(5);
TextField tf3=new TextField(5);
TextField tf4=new TextField(5);
Button b=new Button("我画");
SubPanel sp;
public draw()
{

f.add(tf1);
f.add(tf2);
f.add(tf3);
f.add(tf4);
f.add(b);
f.pack();

b.addActionListener(this);
f.setLayout(new FlowLayout());
f.setSize(400,500);
f.setBackground(new Color(89,145,145));
f.setForeground(new Color(0,0,255));
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{System.exit(0);}
});
}
public void actionPerformed(ActionEvent e)
{
        
i1=Integer.parseInt(tf1.getText());
i2=Integer.parseInt(tf2.getText());
i3=Integer.parseInt(tf3.getText());
i4=Integer.parseInt(tf4.getText());
sp=new  SubPanel(i1,i2,i3,i4);
System.out.print(i1+" "+i2+" "+i3+" "+i4);// 测试语句,//可打印出;
f.add(sp);

Graphics g=sp.getGraphics();
sp.Draw(g);
System.out.println("222");// 测试语句,可打印出;
}
public static void main(String args[])
{
draw d=new draw();
System.out.println("555");// 测试语句,可打印出;
}

}






|
你把sp加到Frame上之后,用Draw绘制了直线,但是这个actionPerformed执行之后,会触发Frame调用repaint(), 再触发sp调用repaint(), 就清空了你绘制的直线。所以你把Draw方法换成paint, 调用的时候直接repaint()试试。

|
1.看一下关于布局管理器。
f.setLayout(new FlowLayout());
你的Frame用的是FlowLayout,当你添加sp时,它是以默认尺寸,顺序加入到了父容器中
2.在panel上画图,应该重载paint()方法。

|
我试了一下,可能是不能在运行期间再往frame加panel了,
所以你那个panel没加上去,你其实可以先把它加上去呀,

|
楼上的说得对,光重载一个draw()是不行的,还要写paint()(其实主要是要重载repaint()的行为,缺省repaint()调用paint(),所以要重载paint())

|
to:asdmonster(asd) 
我照得的方法做了还是不行啊
有哪位做好了请帖出源代码啊

|
试试看....我也很菜,楼主不用太期待

|
是不是g.setColor(Color.XXX)
设置一个颜色

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 基于Html5的mockups在线工具简介
  • 装MYSQL后启动错误! mysqld ended --在线急等!在线急等!在线急等!在线急等!-----
  • MyEclipse SVN插件SubEclipse 在线离线等几种安装方式介绍
  • 智能在线表单设计器 FreeForm智能在线表单设计器
  • Linux使用群24032501,保持20人在线,目标50人在线
  • 简单的输入输出问题 在线等待 在线给分
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等
  • 在线等,在线给分!(简单问题,急)
  • 我需要唯一用户在线,不能两个用户同时在线的JSP实现的设计文档
  • 在线等,在线给分!!!!!!!!!!
  • 在线求助!关于如何使用“信号”的方式来响应键盘按下的消息!在线急盼回复!
  • 如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?
  • 在线等几个简单问题解答,答出一个在线加50分。
  • 在线解压压缩 PclZip
  • 在线支持系统 CSLH
  • 在线视频编辑工具 Kaltura
  • 非常急,请问如何用JSP实现在线人数统计
  • 手机在线收音机 MFRadio
  • 在线客服系统 PHP Live!
  • 在线考试系统 TCExam


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    在线求教, 为什么不能开始除root之外的用户登录??...很急, 在线等 iis7站长之家