源代码如下:
package iframe;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.Box;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.event.MouseInputListener;
import home.Target;
import iframe.BackgroundPanel;
import publicclass.jinternalFrame;
public class Floor {
Image img;
int x0;//地图原点X方向偏移量
int y0;//地图原点y方向偏移量
int imgWidth, imgHeight;
int countnum=50;
int width;//面板宽度
int height;//面板高度
BackgroundPanel backgroundPanel;//背景面板
Target target=new Target();
AnchorManage anchormanage=new AnchorManage();
String floorTitle;//层名称
MapManage map=new MapManage();
/*获取图层的名称/
public String getFloorTitle() {
return floorTitle;
}
/**设置图层的名称*/
public void setFloorTitle(String floorTitle) {
this.floorTitle = floorTitle;
}
public JInternalFrame getFloor(String title,String floor) {//第一参数表示面板名称,第二个参数表示图层
jinternalFrame jinerFrame=new jinternalFrame();//实例化一个内部内窗体对象
JInternalFrame jinFrame=jinerFrame.creatTagInDest(title,"image/icon/tagicon.png");
String mapAdress=map.getMapAdress(floor);
x0=map.getx_x0(floor);//地图原点X方向偏移量
y0=map.gety_y0(floor);//地图原点Y方向偏移量
anchormanage.setX0(x0);//设置基站的X方向偏移量
anchormanage.setY0(y0);//设置基站的Y方向偏移量
target.setX0(x0);//设置标签的X方向偏移量
target.setX0(y0);//设置标签的Y方向偏移量
backgroundPanel = new BackgroundPanel(mapAdress,x0,y0);// 创建带背景的面板
JLabel[] tagLabel=target.targetJlabel(floor);//背景面板添加图标
for(int i=0;i<tagLabel.length;i++) {
backgroundPanel.add(tagLabel[i]);
}
JLabel[] anchorLabel=anchormanage.getAnchorJlabel(floor);//背景面板添加基站图标
for(int i=0;i<anchorLabel.length;i++) {
backgroundPanel.add(anchorLabel[i]);
}
target.statThread();
anchormanage.startThread();
jinFrame.add(getFloorJpan());
return jinFrame;
}
public JPanel getFloorJpan() {//创建层面板
JPanel floorJpan=new JPanel();
floorJpan.setBackground(Color.black);//设置面板背景颜色
floorJpan.setLayout(new BorderLayout());//设置面板为边界布局
Box topicBox = Box.createHorizontalBox();// 创建一个水平箱容器
topicBox.setBackground(Color.WHITE);
JLabel tagCount=new JLabel("在线标签数统计:");
JLabel tagCount2=new JLabel("测试");
topicBox.add(tagCount);
topicBox.add(Box.createHorizontalStrut(35));// 添加一个5像素宽的水平支柱
topicBox.add(tagCount2);
floorJpan.add(topicBox,BorderLayout.NORTH);
floorJpan.add(backgroundPanel, BorderLayout.CENTER);//将带背景的面板添加到层面板中
/*--------------------鼠标滚动事件监听开始----------------------------------*/
backgroundPanel.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent e) {
//e.getWheelRotation()>0表示鼠标滚轮向外滚动小于0表示向内滚动
if(e.getWheelRotation()>0 && countnum <= 200) {
countnum=countnum+10;
backgroundPanel.setNum(countnum);
}
if(e.getWheelRotation()<0 && countnum >= 20) {
countnum=countnum-10;
backgroundPanel.setNum(countnum);
}
backgroundPanel.repaint();
}
});
/--------------------鼠标滚动事件监听结束----------------------------------/
MouseEventListener mouseListener = new MouseEventListener(backgroundPanel);
backgroundPanel.addMouseListener(mouseListener);
backgroundPanel.addMouseMotionListener(mouseListener);
return floorJpan;
}
/**鼠标事件监听*/
class MouseEventListener implements MouseInputListener {
Point origin;//点
BackgroundPanel backgroundPanel;//需要自由拖动的带背景图片的面板
public MouseEventListener(BackgroundPanel backgroundPanel) {
this.backgroundPanel = backgroundPanel;
origin = new Point();
}
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mousePressed(MouseEvent e) {
//鼠标点击面板变为手形
backgroundPanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
origin.x = e.getX();
origin.y = e.getY();
}
@Override
public void mouseReleased(MouseEvent e) {
//鼠标离开面板变为手形
backgroundPanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseEntered(MouseEvent e) {
//鼠标进入面板变为手形
backgroundPanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void mouseDragged(MouseEvent e) {
backgroundPanel.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
Point p = this.backgroundPanel.getLocation();
this.backgroundPanel.setLocation(//面板新的坐标位置 = 移动前坐标位置+(鼠标指针当前坐标-鼠标按下时指针的位置)
p.x + (e.getX() - origin.x),
p.y + (e.getY() - origin.y));
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO 自动生成的方法存根
}}
}