| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:[求助]关于Panel数值的传递!
只看楼主 加入收藏
steven403
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-8-9
收藏
 问题点数:0 回复次数:1 
[求助]关于Panel数值的传递!

程序的内容是,在窗体上画出坐标系,通过输入XY在坐标系上画出垂直的线,我的程序想法是,生成两个Panel,一个上面有jbutton ,jtextfield组件,另一个panel是画线的显示,两个加到主窗体上:但老是出现异常,在运行期间。大家帮我看看,这程序,是那里出了错!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test6 extends JFrame{
drawpanel p;
actionpanel mp;
public Test6(){
p=new drawpanel();
mp=new actionpanel();
getContentPane().add(p,BorderLayout.CENTER);
getContentPane().add(mp,BorderLayout.NORTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800,700);
show();
}
public static void main(String agrs[]){
new Test6();
}
}


//------------------------------------组件动作-------------------------------//
class actionpanel extends JPanel{
JTextField t1,t2;
JLabel l1,l2;
JButton b;
actionpanel(){
t1=new JTextField(4);
t2=new JTextField(4);
l1=new JLabel("X=");
l2=new JLabel("Y=");
b=new JButton("draw the line");
setLayout(new FlowLayout());
add(l1);
add(t1);
add(l2);
add(t2);
add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int x1=Integer.parseInt(t1.getText());// 取得jtextfield上的值
int y1=Integer.parseInt(t2.getText());
drawpanel t=new drawpanel();
t.mydraw(50+x1,550-y1,50+x1,550);
}
});
}

}
//--------------------------画线类-------------------------//
class drawpanel extends JPanel {
int x[];//存取坐标点
int y[];
int xend,yend;//坐标轴原点位置
actionpanel k=new actionpanel();
drawpanel(){
x=new int[20];
y=new int[20];
xend=50;
yend=550;
x[0]=0;
y[0]=0;
for(int i=1;i<20;i++){ //每隔25画一个坐标点
x[i]=x[i-1]+25;
y[i]=y[i-1]+25;
}
}

public void paint(Graphics g){
//-------------------画坐标紬----------------------//
g.drawLine(50,50,50,550);
g.drawLine(50,550,700,550);
//--------------画纵坐标-----------------------------//
for(int i=0;i<20;i++){
g.drawString(y[i]+" ",xend-30,yend);
g.drawOval(xend,yend,2,2);
yend=yend-25;
}
//--------------画横坐标-----------------------------//
yend=550;
xend=50;
for(int j=0;j<20;j++){

g.drawString(x[j]+"",xend,yend+30);
g.drawOval(xend,yend,2,2);
xend=xend+25;
}

}
public void update(Graphics g){
paint(g);
}
public void mydraw(int a,int b,int c,int d){
Graphics g=getGraphics();
g.drawLine(a,b,c,d);

}


}



搜索更多相关主题的帖子: Panel 数值 import awt java 
2006-03-31 18:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
Graphics g=getGraphics();
你这一句得到的g 有可能是一个null值,所以你会错
建议你用repaint()方法,在paint()中动态的改变X,Y的值
你在paint()中的g.drawLine(x,y,x1,y1)可以在别的地方改变
不就可以实现了了吗

可惜不是你,陪我到最后
2006-03-31 18:48
快速回复:[求助]关于Panel数值的传递!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035270 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved