当前位置: 代码迷 >> Java相关 >> 用J2SE编写Swing窗口程序---冰峰来报到,哈哈哈
  详细解决方案

用J2SE编写Swing窗口程序---冰峰来报到,哈哈哈

热度:478   发布时间:2007-03-26 00:06:36.0
Eastsun,你的代码前一部份我看起比较轻松,后一部份看起就困难了:
class LinkLabel extends JLabel{
private String text,url;
private boolean isSupported;
public LinkLabel(String text,String url){
this.text =text;
this.url =url;
try{
this.isSupported = Desktop.isDesktopSupported()&&Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
}catch(Exception e){
this.isSupported = false;
}
setText(false);
addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e){
setText(isSupported);
if(isSupported) setCursor(new Cursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent e){
setText(false);
}
public void mouseClicked(MouseEvent e){
try{
Desktop.getDesktop().browse(new java.net.URI(LinkLabel.this.url));
}catch(Exception ex){
}
}
});
}
private void setText(boolean b){
if(!b) setText("<html><font color=black>"+text);
else setText("<html><font color=blue><u>"+text);
}
}
你这段代码是希望实现什么功能?是不是前部份要new LinkLabel(),所以你在下面写了一个LinkLabel类,希望版主将你这段代码加点注释,分别起到什么功能,好吗?谢谢,最后还有个问题就是在最后的setText()方法里为什么还有HTML的标签出现?
----------------解决方案--------------------------------------------------------
简单说下吧:LinkLabel实现的功能就是将它上面显示的文字实现为超联接,当鼠标放在文字上面的时候,文字变为蓝色,并出现下划线;单击左键就会打开连接.
实现的方式就是给Label注册一个鼠标监听器,当鼠标出现上述动作时就表现出相应的行为.
其中的setText方法就是改变label上文字的现示,其中的html标签是为了让显示更美观一些.

代码本身应该没什么难度,关键是你要知道几个知识:
1.Swing组件中可以嵌入html代码来格式化现示
2.Desktop类的相关知识.
这些东西可以在API文档上找到,更具体的可以看sun官方网站的[url=http://java.sun.com/docs/books/tutorial/uiswing/components/html]tutorial[/url]
----------------解决方案--------------------------------------------------------
冰封,先谢啦!
这贴不错,该顶上去学习下
----------------解决方案--------------------------------------------------------
Eastsun研究JDK1.6挺透的嘛,赞一个
----------------解决方案--------------------------------------------------------
其中的setText方法就是改变label上文字的现示,其中的html标签是为了让显示更美观一些.

这些是1.6新增的吗?
----------------解决方案--------------------------------------------------------
SWING出来时候,就支持用HTML标签了,所以说是从JDK1.2开始就支持了
----------------解决方案--------------------------------------------------------
以下是引用Eastsun在2007-3-26 9:20:23的发言:
简单说下吧:LinkLabel实现的功能就是将它上面显示的文字实现为超联接,当鼠标放在文字上面的时候,文字变为蓝色,并出现下划线;单击左键就会打开连接.
实现的方式就是给Label注册一个鼠标监听器,当鼠标出现上述动作时就表现出相应的行为.
其中的setText方法就是改变label上文字的现示,其中的html标签是为了让显示更美观一些.

代码本身应该没什么难度,关键是你要知道几个知识:
1.Swing组件中可以嵌入html代码来格式化现示
2.Desktop类的相关知识.
这些东西可以在API文档上找到,更具体的可以看sun官方网站的[url=http://java.sun.com/docs/books/tutorial/uiswing/components/html]tutorial[/url]
Eastsun,猛男,根据你的附带说明书再加上你写的代码看能懂一大半了,不过还有个小问题:你说SWING组件中可以嵌入HTML代码,问题是SWING本来展示出来的就是一个窗口式的应用程序啦,而且你加的代码是:

if(!b) setText("<html><font color=black>"+text);
else setText("<html><font color=blue><u>"+text);

这对HTML标签也没结尾啊?也不完全啊,我理解你的这个HTML标签目的是为了使字体变色是吧,SWING里也能使字体变色啊,我是能看懂你写的HTML标签,但是却无法理解它是如何实现的功能,HTML标签应该是成对出现才对啊


----------------解决方案--------------------------------------------------------

还有就是你指的Desktop是什么东西哟,我没学过,更谈不上了解,我目前学过的编程语言就只有C,JAVA,ASP


----------------解决方案--------------------------------------------------------

呵呵,我给的链接[url=http://java.sun.com/docs/books/tutorial/uiswing/components/html]http://java.sun.com/docs/books/tutorial/uiswing/components/html[/url]有对如何使用html的详细说明.
我就不重复了,再说我也不可能讲的比上面还清楚


----------------解决方案--------------------------------------------------------
Desktop就是JAVA里面的一个API
----------------解决方案--------------------------------------------------------