谁能点兄弟抱一下歌曲链接链接

中国Java开发网 - 请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
Topic: 请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
1.请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
Posted by: michaelyung
Posted on:
在一个panel上添加label,给label添加链接。鼠标移到上面时显示为蓝色,否则就显示为黑色。现在基本通过。点击也可以打开网页。但有个小bug,发现鼠标上下through字符时,颜色变化很好。左右through时,发现就不行了。谁能帮我看看,我实在不知道哪个地方导致的问题。谢谢各位!!import java.awt.*;import java.awt.event.*;import java.awt.font.*;import java.awt.geom.*;import javax.swing.*;import java.text.*;public class MouseMove{
public static void main(String[] args){
MouseFrame frame = new MouseFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}/* * JFrame * @author yung */class MouseFrame extends JFrame{
public MouseFrame(){
setTitle("MouseTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
MousePanel panel = new MousePanel();
Container contentPane = getContentPane();
contentPane.add(panel);
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}/* * JPanel * @author yung */class MousePanel extends JPanel{
public MousePanel(){
label = new HLabel(message,url);
label.setFont(new Font("Simsun",20,20));
add(label,BorderLayout.CENTER);
private HL
private String message="Hello Bupt";
private String url="http://www.";}/* * HLabel * @author yung */class HLabel extends JLabel{
//链接网址
private R //字符区域
boolean flag =
//判断鼠标在字符区域内的标志
* constructor
public HLabel(String text,String uurl){
super(text);
setHorizontalAlignment(SwingConstants.CENTER);
bounds=new Rectangle();
//当点击链接时打开网页
public void openIt() {
Runtime.getRuntime().exec("mozilla "+url);
}catch (Exception e) {
JOptionPane.showMessageDialog(this,e.getMessage(),"Error",JOptionPane.ERROR_MESSAGE);
//当鼠标移到链接上字体变为蓝色,然后重绘,鼠标变为手形
public void blue(){
repaint();
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
//鼠标在其他地方,鼠标为默认。
public void black(){
repaint();
setCursor(Cursor.getDefaultCursor());
public void paint(Graphics g) {
super.paintBorder(g);//括号里是g,不知怎么显示不出来
Graphics2D g2=(Graphics2D)g;
//获取label上字符属性
Font f=getFont();
AttributedString ats=new AttributedString(this.getText());
ats.addAttribute(TextAttribute.FONT, f);
ats.addAttribute(TextAttribute.UNDERLINE,TextAttribute.UNDERLINE_ON);
AttributedCharacterIterator iter=ats.getIterator();
FontRenderContext frc=g2.getFontRenderContext();
TextLayout tl=new TextLayout(iter, frc);
//重绘时根据flag来判断是变为蓝色还是黑色
if(flag==true){
g2.setColor(Color.black);
g2.setColor(Color.BLUE);
//获取字符区域
Rectangle rect=tl.getBounds().getBounds();
Rectangle total=this.getBounds();
bounds.x=(total.width-rect.width)/2;
bounds.y=(total.height-rect.height)/2;
bounds.width=rect.
bounds.height=rect.
tl.draw(g2,bounds.x,bounds.y+rect.height);
//添加监听器
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
//查找鼠标所在点是否在字符的区域内
public Rectangle2D find(Point2D p){
if (bounds.contains(p)) //括号里是p,也没显示出来
//鼠标点击的事件处理
private class MouseHandler extends MouseAdapter {
public void mouseClicked(MouseEvent event){
if(SwingUtilities.isLeftMouseButton(event)) {
if(event.getClickCount()==1) {
if(find(event.getPoint())!=null) {
//鼠标移动的事件处理
private class MouseMotionHandler implements MouseMotionListener{
public void mouseMoved(MouseEvent event){
if (find(event.getPoint()) == null){
//调用默认鼠标方法
//调用显示链接为蓝色方法
public void mouseDragged(MouseEvent event){
2.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: michaelyung
Posted on:
自己顶一下。有人知道吗,我还是解决不了。不明白什么问题。
3.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: kavinwang
Posted on:
两个方面:1,不必在paint中每次都执行
//添加监听器
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
在构造中设置一次就行了2,不必添加MouseMotionListener,只要在MouseHandler中实现mouseEnter和MouseExit两个方法,在mouseEnter中进行blue,在MouseExit中进行black就OK了
4.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: michaelyung
Posted on:
嗯。果然可以。谢谢你啊。不过为什么之前不使用mouseEntered mouseExited,而采用监听鼠标是否在label区域内来判断变化就不可呢。就是说为什么会有那样的bug啊?或许比较弱,不过想把原理搞清楚。谢谢指点一下啊。
5.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: kavinwang
Posted on:
没明白你的问题,能说清楚点吗?
6.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: michaelyung
Posted on:
就是使用我的那种方法为什么会有bug?我现在明白你所用的方法,在label上添加mouselistener,鼠标entered和鼠标exited都能调用某个事件处理。而我的方法是通过判断鼠标是否在label的座标区域内来调用事件处理的。例如通过在Rectangle内find鼠标所在座标点来判断。不知我讲清楚没,我当初设计就是用这个方法来设计的。非常感谢。
7.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: kavinwang
Posted on:
鼠标事件的使用范围和方法有一定的标准,这个标准是可以跨越的。关于这些方法说起来可能有点多,建议你多看一些这个方面的资料,如果你能够理解DnD在java中的实现,对鼠标事件的理解可能会更深,另外鼠标事件的处理你也可以看一些swing中对鼠标的处理方面的资料。
8.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: michaelyung
Posted on:
嗯。好的。我会去看下。因为我平时研究Swing比较少,但实际应用中有时也要用到,所以只是知道一些,不是太深入。谢谢你啊。有机会再向你请教。非常感谢阿。
9.Re:请问一个给label加超级链接的问题,有点小bug,谁能帮忙解决下。
[Re: michaelyung]
Posted by: kavinwang
Posted on:
不用客气,大家互相学习!
Powered by & Version Jute 1.5.6 Ent
Copyright &
Cjsdn Team. All Righits Reserved.
客服电话&&&&&客服信箱&&&&&客服QQ&714923【峻宁天下】亲们谁能链接一下峻宁在央视元旦晚会表演清楚一点的视_张峻宁吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2,080贴子:
【峻宁天下】亲们谁能链接一下峻宁在央视元旦晚会表演清楚一点的视收藏
亲,看看这个视频怎样
嗯!很清楚~谢谢你啦!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或•回答
•回答
•回答
•回答
•回答
可以先把电影下到硬盘,下好后再复制粘贴到手机即可;第三方软件导入也可以。(还要看手机支持哪种视频格式)
炫丽之星际云天&1-25 22:47
用360手机助手上传到你手机上。
最爱锁锁&1-25 22:44
手机安装个360手机助手直接导入
天意沧海一笑&1-25 22:46
你都已经连上了,直接复制到手机储存里不就是了!
yang88yhb&1-25 22:45
热心网友&1-25 22:44
猜你感兴趣
服务声明: 信息来源于互联网,不保证内容的可靠性、真实性及准确性,仅供参考,版权归原作者所有!Copyright &
.&&闽ICP备号&&&
Powered by

我要回帖

更多关于 头发怎么能长快一点 的文章

 

随机推荐