跟我学java swing之游戏设计_跟我学Java Swing之游戏设计(4)

黄糖故事

模态窗口和非模态窗口

在Windows中,我们常常会接触到模态窗口和非模态窗口。所谓模态窗口,就是指当前窗口弹出时,只有关闭此窗口才能继续进行其它窗口的操作。非模态窗口则是即使不关闭当前的窗口,也可以对后面的的窗口进行操作。最典型的例子就是Windows 中自带的“记事本”软件,“字体”功能就是模态窗口,而“查找”功能就是非模态窗口了。

在JDialog中,我们可以用JDialog(Frame owner, boolean modal)来指定对话框的模态或非模态状态。

在控件上使用HTML标签

大多数的Swing控件可以显示文字,对于这些控件,在一般情况下,只能使用单一字体、单一样式、单一颜色来显示。比如说,当要在标签JLabel控件上显示文件时,我们会用到JLabel的setFont()、setForeground()等方法,并且代码看起来会是这样:

label = new JLabel("A label");

label.setFont(new Font("Serif", Font.PLAIN, 14));

label.setForeground(new Color(0xffffdd));

如果想在某段文字中使用不同的字体或颜色,其实可以使用HTML格式。在控件上使用HTML格式确实是一件令人兴奋的事情,我们只需要简单的将标记写在控件中就行了,比如可以这样创建一个JLabel:

JLabel label = new JLabel("RED");

然而,直到JDK 1.4.2,并非所有的控件都可以使用HTML格式,在SUN的官方文档中提到:支持HTML格式的控件只有按钮、菜单、标签、提示、标签面板、树和表格。无论如何,这都是一个非常好用的特性!

强劲的编辑器控件JEditorPane

上面说到了HTML格式,HTML格式使得Swing控件显示文字的能力增加了不少,然而,如果要进行图文混排的显示,HTML格式也无能为力了。

网络让世界变得精彩,互联网中各式各样的网站都与HTML分不开,就算不懂HTML,也可以使用Word、FrongPage等工具制作出漂亮的网页来。因此,如果能够将网页在控件中显示出来,那就解决了不少问题。

JEditorPane是Swing中一款非常强大的文本编辑控件,如果想完全了解JEditorPane的用法,绝不是简简单单的一两篇教程能说讲完的,大家如果有兴趣,可以看看Java安装目录下demo\jfc\Stylepad下的演示程序,它可以告诉你JEditorPane有多么强大。

在JEditorPane中,我们完全可以将HTML文件(或写字板等文字处理软件生成的RTF格式的文件)直接显示出来,虽然它还不能完整地支持HTML的所有标准。因此,大家在制作页面的时候,尽可能的只使用HTML3.2标准的语法而不要使用CSS、JavaScript等特性。

如何让JEditorPane显示HTML文件呢?最简单的做法就是:

JEditorPane EditorPane= new JEditorPane();

URLClassLoader urlLoader = (URLClassLoader)this.getClass().getClassLoader();

URL url = urlLoader.findResource("doc/help.htm");

EditorPane.setEditable(false);

EditorPane.setPage(url);

我们首先使用setEditable(false)语句使JEditorPane中的内容不可编辑,然后再使用setPage(url)方法载入需要显示的HTML文件。

不仅如此,JEditorPane还可以处理HTML中的链接,做法也非常简单。首先,要使JEditorPane能够响应点击链接的事件,我们需实现HyperlinkListener接口。然后,我们为JEditorPane添加超链接的监听:

HelpPane.addHyperlinkListener(this);

最后,我们再实现监听链接事件的处理:

public void hyperlinkUpdate(HyperlinkEvent e) {

if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {

JEditorPane pane = (JEditorPane) e.getSource();

if (e instanceof HTMLFrameHyperlinkEvent) {

HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent) e;

HTMLDocument doc = (HTMLDocument) pane.getDocument();

doc.processHTMLFrameHyperlinkEvent(evt);

} else {

try {

pane.setPage(e.getURL());

}

catch (Throwable t) {

t.printStackTrace();

}

}

}

}

只需要简单的三个步骤,我们就可以享受JEditorPane带来的处理HTML页面的好处,做出漂亮的帮助文档了(见图2)。

4d74f44f2b3d3ee7da3777167f92903e.gif

图2:漂亮的帮助文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值