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

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



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

本人新手上路 在这问了好多问题了 十分感谢大家的帮助
...全文
161 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,获取坐标
【期刊论文复现】多元宇宙算法求解电力系统多目标优化问题(Matlab实现)内容概要:本文复现了期刊论文中提出的多元宇宙算法(Multi-Verse Optimizer, MVO)用于求解电力系统中的多目标优化调度问题,采用Matlab进行代码实现。该算法受宇宙中黑洞、白洞和虫洞等天文现象启发,通过数学建模模拟多目标搜索过程,具有较强的全局寻优能力和收敛性能。文中将其应用于典型的电力系统经济调度场景,如考虑燃料成本、排放量等多个优化目标的微电网或多能源系统调度问题,通过构建合理的数学模型和约束条件,实现对多个冲突目标的协同优化。同时,文章提供了完整的代码框架与仿真结果,便于读者理解和复现。; 适合人群:具备一定Matlab编程基础和优化算法基础知识的研究生、科研人员及从事电力系统优化调度工作的工程师。; 使用场景及目标:①学习和掌握新型智能优化算法——多元宇宙算法的基本原理与实现方法;②将其应用于电力系统经济调度、微电网优化、多目标决策等领域的模型求解;③为科研工作提供可复现的代码参考和技术支持。; 阅读建议:建议读者结合Matlab代码逐行理解算法实现细节,重关注目标函数建模、约束处理及MVO算法核心迭代逻辑,并尝试在不同测试系统中进行参数调优与性能对比,以深入掌握其应用技巧。
内容概要:本文针对计及光伏波动性的主动配电网有功无功协调优化问题,提出一种基于多目标粒子群优化算法(MOPSO)的协同优化方案,并通过Matlab代码实现仿真验证。研究充分考虑光伏发电的随机性与间歇性特征,构建了一个综合有功功率调节、无功功率补偿、电压质量提升及网络损耗最小化的多目标优化模型,旨在提升高渗透率光伏接入下主动配电网的运行稳定性与经济性。通过优化算法求解实现有功与无功资源的协调调度,有效缓解因光伏出力波动引起的电压越限与潮流分布不均等问题,增强了系统的调节能力与鲁棒性。; 适合人群:具备电力系统分析基础和Matlab编程能力的科研人员,以及电气工程、自动化等相关专业的研究生和高年级本科生。; 使用场景及目标:①用于研究高比例可再生能源接入背景下主动配电网的优化运行策略;②为电力系统仿真教学与科研提供可复现的算法模型与代码实例,目标是掌握多目标智能优化算法在电力系统优化调度中的建模方法、实现流程及其工程应用价值。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现细节,重关注目标函数的设计、约束条件的处理方式以及粒子群算法的改进策略,同时可通过调整参数设置、测试不同场景以深入理解优化机制与系统响应特性。

62,620

社区成员

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

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