Jframe.java
import java.awt.BorderLayout;
import java.awt.FlowLayout;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Jframe extends JFrame{
private int xo,yo;
private int x1,y1;
JTextField area1;
JTextField area2;
JTextField area3;
JTextField area4;
JPanel p1;
public Jframe(){
p1=new JPanel();
p1.setLayout(new FlowLayout());
this.setLayout(new BorderLayout());
if(area1==null){
area1=new JTextField(80);}
if(area2==null){
area2=new JTextField(80);}
if(area3==null){
area3=new JTextField(80);}
if(area4==null){
area4=new JTextField(80);} p1.add(area1);
p1.add(area2);
p1.add(area3);
p1.add(area4);
this.add(p1,BorderLayout.SOUTH);
this.add(new add(xo,yo,x1,y1),BorderLayout.NORTH);
//这里就是那个出错的地方
xo=Integer.parseInt(area1.getText().toString());
yo=Integer.parseInt(area2.getText().toString());
x1=Integer.parseInt(area3.getText().toString());
y1=Integer.parseInt(area4.getText().toString());
this.setTitle("DDA算法画直线");
this.setBounds(200,200,400,400);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main(String []args){
Jframe frame=new Jframe();
}} add.java
import java.awt.Color;
import java.awt.Graphics;import javax.swing.JPanel;
public class add extends JPanel{
//起始点
private int xo,yo;
//终点
private int x1,y1;
add(int xo,int yo,int x1,int y1){
this.xo=xo;
this.yo=yo;
this.x1=x1;
this.y1=y1;
}
public void paint(Graphics g){
int s=xo;
int q=yo;
double c=(y1-yo)/(x1-xo);
if(c<1){
if(xo>x1){
int t=xo;
xo=x1;
x1=t;
}
for(;xo<=x1;xo++){
double t=yo;
int n=(int)yo;
yo+=c;
if((t-n)>=0.5){
yo=n+1;
}
else{
yo=n;
}
g.setColor(Color.blue);
g.drawLine(s,q,xo,yo);
}
}
else{
if(yo>y1){
int t=yo;
yo=y1;
y1=t;
}
for(;yo<=y1;yo++){
double t=xo;
int n=(int)xo;
xo+=1/c;
if((t-n)>=0.5){
xo=n+1;
}
else{
xo=n;
}
g.setColor(Color.red);
g.drawLine(s,q,xo,yo);
}
}
}
}报错:Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Jframe.<init>(Jframe.java:42)
at Jframe.main(Jframe.java:55)
import java.awt.BorderLayout;
import java.awt.FlowLayout;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Jframe extends JFrame{
private int xo,yo;
private int x1,y1;
JTextField area1;
JTextField area2;
JTextField area3;
JTextField area4;
JPanel p1;
public Jframe(){
p1=new JPanel();
p1.setLayout(new FlowLayout());
this.setLayout(new BorderLayout());
if(area1==null){
area1=new JTextField(80);}
if(area2==null){
area2=new JTextField(80);}
if(area3==null){
area3=new JTextField(80);}
if(area4==null){
area4=new JTextField(80);} p1.add(area1);
p1.add(area2);
p1.add(area3);
p1.add(area4);
this.add(p1,BorderLayout.SOUTH);
this.add(new add(xo,yo,x1,y1),BorderLayout.NORTH);
//这里就是那个出错的地方
xo=Integer.parseInt(area1.getText().toString());
yo=Integer.parseInt(area2.getText().toString());
x1=Integer.parseInt(area3.getText().toString());
y1=Integer.parseInt(area4.getText().toString());
this.setTitle("DDA算法画直线");
this.setBounds(200,200,400,400);
this.setVisible(true);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}
public static void main(String []args){
Jframe frame=new Jframe();
}} add.java
import java.awt.Color;
import java.awt.Graphics;import javax.swing.JPanel;
public class add extends JPanel{
//起始点
private int xo,yo;
//终点
private int x1,y1;
add(int xo,int yo,int x1,int y1){
this.xo=xo;
this.yo=yo;
this.x1=x1;
this.y1=y1;
}
public void paint(Graphics g){
int s=xo;
int q=yo;
double c=(y1-yo)/(x1-xo);
if(c<1){
if(xo>x1){
int t=xo;
xo=x1;
x1=t;
}
for(;xo<=x1;xo++){
double t=yo;
int n=(int)yo;
yo+=c;
if((t-n)>=0.5){
yo=n+1;
}
else{
yo=n;
}
g.setColor(Color.blue);
g.drawLine(s,q,xo,yo);
}
}
else{
if(yo>y1){
int t=yo;
yo=y1;
y1=t;
}
for(;yo<=y1;yo++){
double t=xo;
int n=(int)xo;
xo+=1/c;
if((t-n)>=0.5){
xo=n+1;
}
else{
xo=n;
}
g.setColor(Color.red);
g.drawLine(s,q,xo,yo);
}
}
}
}报错:Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Jframe.<init>(Jframe.java:42)
at Jframe.main(Jframe.java:55)
不能把""格式化为一个整型 在格式化这前应该判断一下
area1.getText() 不能为整数字符串之后的值...写正则表达式判断吧
try catch掉吧
//这里就是那个出错的地方
xo=Integer.parseInt(area1.getText().toString());
yo=Integer.parseInt(area2.getText().toString());
x1=Integer.parseInt(area3.getText().toString());
y1=Integer.parseInt(area4.getText().toString());不知道这段代码是干什么的,即便是换成area.getText(),得出来的也会是零啊
double c=(y1-yo)/(x1-xo);
这里肯定是会抛异常的。考虑清楚你的逻辑吧