Frame不支持main方法的,你可以在Frame内部添加一个支持paint方法的控件,如Panel等等.
解决方案 »
- 继承和组合问题
- StringBuffer使用==和equals的问题
- 求救~linux系统下用java编写一个内存测试程序,算出cpu的miss rate等一大堆数据
- 关于static{}的问题
- rt.jar ,dt.jar ,tool.jar是什么东西,什么时候需加到到classpath
- 请问怎么使父窗口处于不可编辑装状态啊?
- 小小问题:)20分
- 如何用JAVA写一个FTP的服务器端和客户端?
- 《java 2 编程 21天自学通》清华出版社出的,是翻译的LAURA LEMAY ,ROGERS CADENHEAD 的原版,不知道这本书怎么样?
- byte[] String char[] 区别如何?
- 问各位一个问题,我想开发PC游戏(休闲类小游戏),请问用C/C++还是用java好?
- 关于文件输出的问题!!!
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Label;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;import javax.swing.SwingUtilities;public class DrawLine extends Frame
{ public static void main(String[] args)
{
DrawLine frame = new DrawLine();
Dimension dmnScreen = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dmnMain = new Dimension(650, 550); frame.setTitle("画图测试");
frame.setSize(dmnMain);
frame.setLocation(
(dmnScreen.width - dmnMain.width) / 2,
(dmnScreen.height - dmnMain.height) / 2);
frame.setVisible(true);
}
private ArrayList altPtDown = new ArrayList();
private ArrayList altPtUp = new ArrayList();
private Graphics2D big;
private Label lblStatus = new Label();
private Point ptDown;
private Point ptMove;
private Point ptMoveOld;
private String strStatus; DrawLine()
{
super ();
init();
} private void init()
{
add(lblStatus, BorderLayout.SOUTH);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent arg0)
{
System.exit(0);
}
}); this.addMouseMotionListener(new MouseMotionListener()
{
public void mouseDragged(MouseEvent arg0)
{
if (SwingUtilities.isLeftMouseButton(arg0))
{
ptMove = arg0.getPoint();
repaint();
}
} public void mouseMoved(MouseEvent arg0)
{ }
}); this.addMouseListener(new MouseListener()
{
public void mouseClicked(MouseEvent arg0)
{ } public void mouseEntered(MouseEvent arg0)
{ } public void mouseExited(MouseEvent arg0)
{ } public void mousePressed(MouseEvent arg0)
{
ptDown = new Point(arg0.getPoint());
ptMove = new Point(ptDown);
ptMoveOld = new Point(ptDown);
altPtDown.add(ptDown);
} public void mouseReleased(MouseEvent arg0)
{
ptMove = new Point(arg0.getPoint());
altPtUp.add(ptMove);
ptDown = null;
ptMove = null;
ptMoveOld = null;
}
});
} //当窗口被遮住,再显示的时候,调用此方法重绘
public void paint(Graphics g)
{
super.paint(g);
big = (Graphics2D) g;
g.setColor(Color.BLACK); for (int i = 0; i < altPtDown.size(); i++)
{
ptDown = (Point) altPtDown.get(i);
ptMove = (Point) altPtUp.get(i);
if (ptMove.x > ptDown.x)
{
if (ptMove.y > ptDown.y)
{
g.drawRect(
ptDown.x,
ptDown.y,
ptMove.x - ptDown.x,
ptMove.y - ptDown.y);
g.drawOval(
ptDown.x,
ptDown.y,
ptMove.x - ptDown.x,
ptMove.y - ptDown.y);
}
else
{
g.drawRect(
ptDown.x,
ptMove.y,
ptMove.x - ptDown.x,
ptDown.y - ptMove.y);
g.drawOval(
ptDown.x,
ptMove.y,
ptMove.x - ptDown.x,
ptDown.y - ptMove.y);
}
}
else
{
if (ptMove.y > ptDown.y)
{
g.drawRect(
ptMove.x,
ptDown.y,
ptDown.x - ptMove.x,
ptMove.y - ptDown.y);
g.drawOval(
ptMove.x,
ptDown.y,
ptDown.x - ptMove.x,
ptMove.y - ptDown.y);
}
else
{
g.drawRect(
ptMove.x,
ptMove.y,
ptDown.x - ptMove.x,
ptDown.y - ptMove.y);
g.drawOval(
ptMove.x,
ptMove.y,
ptDown.x - ptMove.x,
ptDown.y - ptMove.y);
}
}
}
}
{
int intTmp; if (aPt.x > aPts.x)
{
intTmp = aPt.x;
aPt.x = aPts.x;
aPts.x = intTmp;
} if (aPt.y > aPts.y)
{
intTmp = aPt.y;
aPt.y = aPts.y;
aPts.y = intTmp;
}
} /* (non-Javadoc)
* @see java.awt.Component#update(java.awt.Graphics)
*/
//当画图时调用此方法重绘
public void update(Graphics g)
{
super.paint(g);
big = (Graphics2D) g; if (ptDown == null)
return;
if (ptMove == null)
return;
if (ptMoveOld == null)
return;
//Erase Old ======================
g.setColor(getBackground());
g.drawLine(ptDown.x, ptDown.y, ptMoveOld.x, ptMoveOld.y);
if (ptMoveOld.x > ptDown.x)
{
if (ptMoveOld.y > ptDown.y)
{
g.drawRect(
ptDown.x,
ptDown.y,
ptMoveOld.x - ptDown.x,
ptMoveOld.y - ptDown.y);
g.drawOval(
ptDown.x,
ptDown.y,
ptMoveOld.x - ptDown.x,
ptMoveOld.y - ptDown.y);
}
else
{
g.drawRect(
ptDown.x,
ptMoveOld.y,
ptMoveOld.x - ptDown.x,
ptDown.y - ptMoveOld.y);
g.drawOval(
ptDown.x,
ptMoveOld.y,
ptMoveOld.x - ptDown.x,
ptDown.y - ptMoveOld.y);
}
}
else
{
if (ptMoveOld.y > ptDown.y)
{
g.drawRect(
ptMoveOld.x,
ptDown.y,
ptDown.x - ptMoveOld.x,
ptMoveOld.y - ptDown.y);
g.drawOval(
ptMoveOld.x,
ptDown.y,
ptDown.x - ptMoveOld.x,
ptMoveOld.y - ptDown.y);
}
else
{
g.drawRect(
ptMoveOld.x,
ptMoveOld.y,
ptDown.x - ptMoveOld.x,
ptDown.y - ptMoveOld.y);
g.drawOval(
ptMoveOld.x,
ptMoveOld.y,
ptDown.x - ptMoveOld.x,
ptDown.y - ptMoveOld.y);
}
} //Draw New ======================
g.setColor(Color.BLACK);
g.drawLine(ptDown.x, ptDown.y, ptMove.x, ptMove.y);
if (ptMove.x > ptDown.x)
{
if (ptMove.y > ptDown.y)
{
g.drawRect(
ptDown.x,
ptDown.y,
ptMove.x - ptDown.x,
ptMove.y - ptDown.y);
g.drawOval(
ptDown.x,
ptDown.y,
ptMove.x - ptDown.x,
ptMove.y - ptDown.y);
}
else
{
g.drawRect(
ptDown.x,
ptMove.y,
ptMove.x - ptDown.x,
ptDown.y - ptMove.y);
g.drawOval(
ptDown.x,
ptMove.y,
ptMove.x - ptDown.x,
ptDown.y - ptMove.y);
}
}
else
{
if (ptMove.y > ptDown.y)
{
g.drawRect(
ptMove.x,
ptDown.y,
ptDown.x - ptMove.x,
ptMove.y - ptDown.y);
g.drawOval(
ptMove.x,
ptDown.y,
ptDown.x - ptMove.x,
ptMove.y - ptDown.y);
}
else
{
g.drawRect(
ptMove.x,
ptMove.y,
ptDown.x - ptMove.x,
ptDown.y - ptMove.y);
g.drawOval(
ptMove.x,
ptMove.y,
ptDown.x - ptMove.x,
ptDown.y - ptMove.y);
}
} ptMoveOld = ptMove;
strStatus =
ptDown.x
+ ", "
+ ptDown.y
+ " "
+ Math.abs(ptDown.x - ptMove.x)
+ ", "
+ Math.abs(ptDown.y - ptMove.y);
lblStatus.setText(strStatus);
}
}你也可以看看JAVA自带的演示DEMO!