我想做这么一个东西....有没有朋友做过类似的,可以给点思路?

rogerzhangqi 2009-07-02 05:57:58
在一个JFrame里有一个很大的JScrollPane
JScrollPane是一张地图 由于图片比较大,所以两边需要有滚轴
最下面有个JTextField
我希望的效果是 我在地图上,用鼠标点某一个建筑 然后JTextField里显示相应文字
不知道能否实现?



我想了些办法 但似乎都行不通
比如说
把地图上的建筑固定一个坐标,鼠标点击后,获得鼠标的当前坐标,符合的话就显示文字
但问题出在 图片有滚轴.......坐标确定不了 如果可以确定坐标,我直接在图上放button就可以实现了..
需要各位兄弟帮帮忙
有详细代码那是最好的了

本人新手上路 在这问了好多问题了 十分感谢大家的帮助
...全文
160 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
talentzzrr 2009-07-18
  • 打赏
  • 举报
回复
package topchina;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class Mouse extends JFrame implements MouseListener {
JScrollPane jsp;
JLabel jl1, jl2;

public Mouse() {
super("鼠标点击事件");
this.setLayout(null);
jl1 = new JLabel();
jl1.setIcon(new ImageIcon("D:/df.jpg"));
jsp = new JScrollPane(jl1);
jsp.setBounds(0, 0, 300, 400);
jl1.addMouseListener(this);
jl2 = new JLabel("点击看看吧");
jl2.setBounds(100, 420, 100, 40);
this.add(jsp);
this.add(jl2);
this.setSize(300, 480);
this.setVisible(true);
}

public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println(e.getX()+","+e.getY());
if((184-e.getX())*(184-e.getX())+(114-e.getY())*(114-e.getY())<=400){
jl2.setText("最");
}else if((328-e.getX())*(328-e.getX())+(103-e.getY())*(103-e.getY())<=400){
jl2.setText("小");
}else if((453-e.getX())*(453-e.getX())+(83-e.getY())*(83-e.getY())<=400){
jl2.setText("说");
}
}

public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public static void main(String[] args) {
new Mouse();
}
}
talentzzrr 2009-07-18
  • 打赏
  • 举报
回复
package topchina;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class Mouse extends JFrame implements MouseListener {
JScrollPane jsp;
JLabel jl1, jl2;

public Mouse() {
super("鼠标点击事件");
this.setLayout(null);
jl1 = new JLabel();
jl1.setIcon(new ImageIcon("D:/df.jpg"));
jsp = new JScrollPane(jl1);
jsp.setBounds(0, 0, 300, 400);
jl1.addMouseListener(this);
jl2 = new JLabel("点击看看吧");
jl2.setBounds(100, 420, 100, 40);
this.add(jsp);
this.add(jl2);
this.setSize(300, 480);
this.setVisible(true);
}

public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
System.out.println(e.getX()+","+e.getY());
if((184-e.getX())*(184-e.getX())+(114-e.getY())*(114-e.getY())<=400){
jl2.setText("最");
}else if((328-e.getX())*(328-e.getX())+(103-e.getY())*(103-e.getY())<=400){
jl2.setText("小");
}else if((453-e.getX())*(453-e.getX())+(83-e.getY())*(83-e.getY())<=400){
jl2.setText("说");
}
}

public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public static void main(String[] args) {
new Mouse();
}
}
wqzy_wqzy 2009-07-08
  • 打赏
  • 举报
回复
用ps将你的大图分割,然后再在JScrollPane内组合。
BatiTan 2009-07-07
  • 打赏
  • 举报
回复
获得鼠标事件的时候
就可以获得鼠标所在的坐标了
d13509187704 2009-07-03
  • 打赏
  • 举报
回复
用鼠标监听器 得到x y坐标
valen_jia 2009-07-03
  • 打赏
  • 举报
回复
swing不会,帮顶
rogerzhangqi 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xcmxjge 的回复:]
在地图的每个建筑物上加一个响应方法,这个方法需要一个参数,这个参数就是你要显示的内容,
当鼠标点击建筑物时,触发那个方法,在方法中把参数显示到JTextField
不知道这样可以不??
[/Quote]

地图上怎么加响应方法呢...?
如果jpg上可以放button多好
jige_hanhan 2009-07-03
  • 打赏
  • 举报
回复
在地图的每个建筑物上加一个响应方法,这个方法需要一个参数,这个参数就是你要显示的内容,
当鼠标点击建筑物时,触发那个方法,在方法中把参数显示到JTextField
不知道这样可以不??
rogerzhangqi 2009-07-03
  • 打赏
  • 举报
回复
我顶顶顶
rogerzhangqi 2009-07-03
  • 打赏
  • 举报
回复
继续求助 求助.....帮忙~~
lovetysx 2009-07-02
  • 打赏
  • 举报
回复
可不可以得到滚轴移到的距离,在结合地图上的绝对坐标来判断?
rogerzhangqi 2009-07-02
  • 打赏
  • 举报
回复
谢谢楼上两位....貌似我听了有点明白意思了
能不能详细告诉下方法?
获得鼠标的位置的方法是什么?

还有那个......当前坐标剪掉滚动位置...听着很抽象...能明白意思。.但完全无从下手
麻烦再指点一下。..谢谢
yanhan0615 2009-07-02
  • 打赏
  • 举报
回复
这个不用放button,你直接用mouseListener去侦听,得到鼠标位置,这时将这个坐标和滚动坐标做一个转换,其实就是用当前的坐标剪掉JScrollPane的滚动位移即可
小李子 2009-07-02
  • 打赏
  • 举报
回复
是不是可以根据鼠标的当前坐标和滚动轴的位置计算出所点的图片坐标出来?
多一个转换过程吧

或者实现一个图片类,增加点击的action,获取坐标

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧