import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.Timer;
import java.util.*;
import java.lang.Math.*;/**
*
*author:badu
*purpose:测试画线
*date:2009-5-11
*/
public class BhamLine
{
public static void main(String [] args)
{        BhamLineFrame bline=new BhamLineFrame();        bline.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        bline.setVisible(true);
}}
class BhamLineFrame extends JFrame
{
public BhamLineFrame()
{
setTitle("测试画线");
setBounds(0,0,900,600);
//setSize(900,600);
        JPanel  dwLine=new DrawBhamLine();        add(dwLine); }
}
/**
*
*画直线
*
*/class DrawBhamLine extends JPanel
{
     private int x0;     private int x1;     private int y0;     private int y1;     private JTextField textField1;     private JTextField textField2;     private JTextField textField3;     private JTextField textField4;     //private Graphics g2;
     public DrawBhamLine()
     {            setLayout(new FlowLayout());
    textField1=new JTextField(20); add(textField1); JLabel label1=new JLabel("x0",SwingConstants.CENTER); add(label1);
textField2=new JTextField(20); add(textField2); JLabel label2=new JLabel("y0",SwingConstants.CENTER); add(label2);
textField3=new JTextField(20); add(textField3); JLabel label3=new JLabel("x1",SwingConstants.CENTER); add(label3);
textField4=new JTextField(20); add(textField4); JLabel label4=new JLabel("y1",SwingConstants.CENTER); add(label4);
JButton button=new JButton("画线"); add(button); DrawAction listener=new DrawAction(); button.addActionListener(listener);
}  public void paintComponent(Graphics g)
 {
         //super.paintComponent(g);         g.setColor(Color.RED);          //g.drawLine(x0,y0,x1,y1);         drawBLine(g,x0,y0,x1,y1);     }     public void drawBLine(Graphics g,int x0,int y0,int x1,int y1)
     {
 g.drawLine(x0,x1,y0,y1);
 }
private class DrawAction implements ActionListener
{
public DrawAction()
{
x0=Integer.parseInt(textField1.getText().trim()); y0=Integer.parseInt(textField2.getText().trim()); x1=Integer.parseInt(textField3.getText().trim()); y1=Integer.parseInt(textField4.getText().trim());
}
public void actionPerformed(ActionEvent event)
{
Graphics g=getGraphics();            //drawBLine(g,100,100,300,300); repaint(); }    } }

解决方案 »

  1.   


    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.Timer;
    import java.util.*;
    import java.lang.Math.*;public class BhamLine {
    public static void main(String[] args) {
    BhamLineFrame bline = new BhamLineFrame();
    bline.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    bline.setVisible(true);
    }
    }class BhamLineFrame extends JFrame {
    public BhamLineFrame() {
    setTitle("測試畫線");
    setBounds(0, 0, 900, 600);
    this.setResizable(false);
    JPanel dwLine = new DrawBhamLine();
    add(dwLine);
    }
    }class DrawBhamLine extends JPanel {
    private int x0;
    private int x1;
    private int y0;
    private int y1;
    private JTextField textField1;
    private JTextField textField2;
    private JTextField textField3;
    private JTextField textField4; public DrawBhamLine() {
    setLayout(new FlowLayout());
    textField1 = new JTextField(20);
    add(textField1);
    JLabel label1 = new JLabel("x0", SwingConstants.CENTER);
    add(label1);
    textField2 = new JTextField(20);
    add(textField2);
    JLabel label2 = new JLabel("y0", SwingConstants.CENTER);
    add(label2);
    textField3 = new JTextField(20);
    add(textField3);
    JLabel label3 = new JLabel("x1", SwingConstants.CENTER);
    add(label3);
    textField4 = new JTextField(20);
    add(textField4);
    JLabel label4 = new JLabel("y1", SwingConstants.CENTER);
    add(label4);
    JButton button = new JButton("畫線");
    add(button);
    DrawAction listener = new DrawAction();
    button.addActionListener(listener);
    } private class DrawAction implements ActionListener { public void actionPerformed(ActionEvent e) {

    Graphics g = ((JButton)e.getSource()).getParent().getGraphics();
    x0 = Integer.parseInt(textField1.getText().trim());
    y0 = Integer.parseInt(textField2.getText().trim());
    x1 = Integer.parseInt(textField3.getText().trim());
    y1 = Integer.parseInt(textField4.getText().trim());
    g.setColor(Color.RED);
    g.drawLine(x0, x1, y0, y1);
    }
    }
    }