Topic: 求助!!!请看下面源程序,编译没有错。运行时会报转换错误~急~!!!谢谢

  Print this page

1.求助!!!请看下面源程序,编译没有错。运行时会报转换错误~急~!!!谢谢 Copy to clipboard
Posted by: 22750124
Posted on: 2005-07-15 23:12

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class RectangleCurvePanel extends JPanel
{
  Label tempx1Label=new Label();
  Label tempy1Label=new Label();
  Label tempx2Label=new Label();
  Label tempy2Label=new Label();

  public RectangleCurvePanel()
  {
    this.addMouseListener
    (
      new MouseAdapter()
      {
        public void mousePressed(MouseEvent e)
        {
          tempx1Label.setText(Integer.toString(e.getX()));
          tempy1Label.setText(Integer.toString(e.getY()));
        }
        public void mouseReleased(MouseEvent e)
        {
          tempx2Label.setText(Integer.toString(e.getX()));
          tempy2Label.setText(Integer.toString(e.getY()));
        }
      }
    Wink;
  }
  
  int x1=Integer.parseInt(tempx1Label.getText());
  int y1=Integer.parseInt(tempy1Label.getText());
  int x2=Integer.parseInt(tempx2Label.getText());
  int y2=Integer.parseInt(tempy2Label.getText());
  int width=Math.abs(x1-x2);
  int hight=Math.abs(y1-y2);
  
  public void paintComponent(Graphics g)
  {
    if(x1<x2 && y1<y2)//右下方拉
    {
      g.drawRect(x1,y1,width,hight);
    }
    else
    {
      if(x1<x2 && y1>y2)//右上方拉
      {
        g.drawRect(x1,y2,width,hight);
      }
      else
      {
        if(x1>x2 && y1>y2)//左上拉
        {
          g.drawRect(x2,y2,width,hight);
        }
        else
        {
          if(x1>x2 && y1<y2)//左下拉
          {
            g.drawRect(x2,y1,width,hight);
          }
          else
          {
            System.out.println("不能画出矩开请重新拖~");
          }
        }
      }
    }
  }  
  
}

class RectangleCurve extends JFrame
{
  public static void main(String[] args)
  {
    RectangleCurve xy=new RectangleCurve();
     RectangleCurvePanel f=new RectangleCurvePanel();
     JLabel titleLabel=new JLabel("Please drawing coordinate.");
    
    Container c=xy.getContentPane();
    
    c.add(f,BorderLayout.CENTER);
    c.add(titleLabel,BorderLayout.NORTH);
    
    xy.setSize(500,350);
    xy.setVisible(true);
  }
}

2.Re:求助!!!请看下面源程序,编译没有错。运行时会报转换错误~急~!!!谢谢 [Re: 22750124] Copy to clipboard
Posted by: Jayzz
Posted on: 2005-07-17 16:17

int x1=Integer.parseInt(tempx1Label.getText());
int y1=Integer.parseInt(tempy1Label.getText());
int x2=Integer.parseInt(tempx2Label.getText());
int y2=Integer.parseInt(tempy2Label.getText());

这里会出错---NumberFormatException. 因为这些Label中没有合适的数据. 合适是指能够被转换为int型.

3.Re:求助!!!请看下面源程序,编译没有错。运行时会报转换错误~急~!!!谢谢 [Re: 22750124] Copy to clipboard
Posted by: Jayzz
Posted on: 2005-07-17 16:22

事实上, 你没有必要设置这几个Label, 完全可以使用这些int. 例如:

tempx1Label.setText(Integer.toString(e.getX()));
tempy1Label.setText(Integer.toString(e.getY()));

改为:
x1 = e.getX();
y1 = e.getY();

4.Re:求助!!!请看下面源程序,编译没有错。运行时会报转换错误~急~!!!谢谢 [Re: 22750124] Copy to clipboard
Posted by: 22750124
Posted on: 2005-07-17 19:42

Label tempx1Label=new Label();
Label tempy1Label=new Label();
Label tempx2Label=new Label();
Label tempy2Label=new Label();

Label中应该给初始值,不给当然会报错,如下面
Label tempx1Label=new Label("1");
Label tempx1Label=new Label("2");
Label tempx1Label=new Label("3");
Label tempx1Label=new Label("4");


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923