/**
*
*/
package test;import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;import javax.swing.JFrame;
import javax.swing.JPanel;/**
* @author zjy
*
*/
public class CrossTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
CrossFrame frame = new CrossFrame();
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true); }}class CrossFrame extends JFrame {
public CrossFrame() {
// TODO 自动生成构造函数存根
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dm = tk.getScreenSize();
WIDTH = dm.width;
HEIGHT = dm.height; setTitle("CrossTest");
setSize(WIDTH / 2, HEIGHT / 2);
setLocation(WIDTH / 4, HEIGHT / 4); CrossPanel panel = new CrossPanel(WIDTH, HEIGHT);
Container con = getContentPane();
con.add(panel); } private int WIDTH; private int HEIGHT;
}class CrossPanel extends JPanel {
public CrossPanel(double w, double h) {
// TODO 自动生成构造函数存根
frameHeight = h;
frameWidth = w; addMouseMotionListener(new MouseCross());
setFocusable(true);
} @Override
public void paint(Graphics g) {
// TODO 自动生成方法存根
super.paintComponents(g);
Graphics2D g2 = (Graphics2D) g; Line2D lineH, lineV;
Point2D PointH1, PointH2, PointV1, PointV2; PointH1 = new Point2D.Double(0.0, y);
PointH2 = new Point2D.Double(frameWidth, y);
lineH = new Line2D.Double(PointH1, PointH2); PointV1 = new Point2D.Double(x, 0.0);
PointV2 = new Point2D.Double(x, frameHeight);
lineV = new Line2D.Double(PointV1, PointV2); String str = "Current Position is:" + x + ',' + y;
g2.drawString(str, 10, 10);
g2.draw(lineV);
g2.draw(lineH); }
private double x; private double y; private double frameWidth; private double frameHeight; private class MouseCross implements MouseMotionListener { public void mouseMoved(MouseEvent event) {
// TODO 自动生成方法存根
x = event.getX();
y = event.getY();
repaint();
} public void mouseDragged(MouseEvent e) {
// TODO 自动生成方法存根
} }}
*
*/
package test;import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;import java.awt.event.MouseMotionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;import javax.swing.JFrame;
import javax.swing.JPanel;/**
* @author zjy
*
*/
public class CrossTest { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
CrossFrame frame = new CrossFrame();
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true); }}class CrossFrame extends JFrame {
public CrossFrame() {
// TODO 自动生成构造函数存根
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dm = tk.getScreenSize();
WIDTH = dm.width;
HEIGHT = dm.height; setTitle("CrossTest");
setSize(WIDTH / 2, HEIGHT / 2);
setLocation(WIDTH / 4, HEIGHT / 4); CrossPanel panel = new CrossPanel(WIDTH, HEIGHT);
Container con = getContentPane();
con.add(panel); } private int WIDTH; private int HEIGHT;
}class CrossPanel extends JPanel {
public CrossPanel(double w, double h) {
// TODO 自动生成构造函数存根
frameHeight = h;
frameWidth = w; addMouseMotionListener(new MouseCross());
setFocusable(true);
} @Override
public void paint(Graphics g) {
// TODO 自动生成方法存根
super.paintComponents(g);
Graphics2D g2 = (Graphics2D) g; Line2D lineH, lineV;
Point2D PointH1, PointH2, PointV1, PointV2; PointH1 = new Point2D.Double(0.0, y);
PointH2 = new Point2D.Double(frameWidth, y);
lineH = new Line2D.Double(PointH1, PointH2); PointV1 = new Point2D.Double(x, 0.0);
PointV2 = new Point2D.Double(x, frameHeight);
lineV = new Line2D.Double(PointV1, PointV2); String str = "Current Position is:" + x + ',' + y;
g2.drawString(str, 10, 10);
g2.draw(lineV);
g2.draw(lineH); }
private double x; private double y; private double frameWidth; private double frameHeight; private class MouseCross implements MouseMotionListener { public void mouseMoved(MouseEvent event) {
// TODO 自动生成方法存根
x = event.getX();
y = event.getY();
repaint();
} public void mouseDragged(MouseEvent e) {
// TODO 自动生成方法存根
} }}
解决方案 »
- 从键盘输入两个回车退出循环问题 请高手进来看一下我的问题 谢谢
- 探讨JAVA对图片的处理问题
- 关于BorderLayout布置中嵌套的问题
- 求救 关于select的滚动条的问题
- 怎样在其他页面引用一个input,急用
- Exception in Thread "main" java.lang.NoClassDefFoundError:Welcome
- 如何求字符串的长度,用什么函数?
- 如何设置JDK能让ie可以显示XYlayout?
- 请介绍那里有关于JBUILDER5的学习书?(电子版的最好)
- 函数问题,求解
- 关于自定义的classloader的问题。
- O'reilly关于JAVA四个包的书分别是什么?
你所用的paint 是AWT里的绘图方法 是Component里的
你把paint 改成paintComponent 就行了还有就是要重绘前先清除 swing已经实现了双缓冲 所以不用担心闪屏
super.paintComponents(g);
//清屏
Dimension size = this.getSize();
g.setColor(this.getBackground());
g.fillRect(0, 0, size.width, size.height);
g.setColor(Color.BLACK);
Graphics2D g2 = (Graphics2D) g;