日期:2014-05-20  浏览次数:20876 次

swing 中如何画图
请教在swing中如何画两条平行线,并且在这条线上可以不断增加一些点(也就是画些点)。这条线是可以滚动鼠标放大缩小的。
(我要模拟一条隧道,隧道上每隔一段距离会有个检测点)。

我的想法是:在jpanel中加入一个jlabel.让jlabel显示边框,在边框上画出点。这样是否可以。如果可以的话,如何将点画在边框上。jlabel放大缩小的时候,点的间距是否会相应改变(我要求改变)。或者是有什么其他idea?
------解决方案--------------------
其实比较关键的是你先要通过数学知识结合你的实际计算出线的位置(开始点、结束点坐标)以及各个点的位置坐标。
然后将这些线和点在窗口上划出来就行了。

我说的这种,其实这就是一个mvc的架构思路。线与点的坐标数据就是model,负责画出来的就是view,至于滚动鼠标放大缩小(其实就是重新计算点和线的坐标而已)就是control。
------解决方案--------------------
package com.class1;
import java.awt.*; 
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*; 

public class test extends JFrame {
 
JPanel mp=null;
JButton jb;
public static void main(String[] args) {
// TODO Auto-generated method stub
test tt=new test();
}

public test()

this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void paint(Graphics g)
{
try
{
g.setColor(Color.yellow);
g.drawLine(10, 40, 100,40);
g.drawLine(10, 60, 100,60);
g.setColor(Color.red);
//第一条线
g.drawLine(15, 40, 15, 40); 
g.drawLine(30, 40, 30, 40);
g.drawLine(45, 40, 45, 40);
g.drawLine(60, 40, 60, 40);
g.drawLine(75, 40, 75, 40);
g.drawLine(90, 40, 90, 40);
//第二条线
g.drawLine(15, 60, 15, 60); 
g.drawLine(30, 60, 30, 60);
g.drawLine(45, 60, 45, 60);
g.drawLine(60, 60, 60, 60);
g.drawLine(75, 60, 75, 60);
g.drawLine(90, 60, 90, 60); 

}catch(Exception e)
{
e.printStackTrace();
}
}


}

这一段是的点是死的,这是最简单的画法!您看看,哈哈