亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在Swing中使用Html標(biāo)簽

系統(tǒng) 1651 0
在Swing中,有時(shí)可能會(huì)出現(xiàn)一些較為復(fù)雜的樣式表現(xiàn)需求,如果單純通過代碼實(shí)現(xiàn),往往得不償失。這時(shí),我們就可以利用html標(biāo)簽,在組件中得到我們想要的效果。

例子如下:

package org.loon.test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.color.ColorSpace;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

/***/ /**
*<p>
*Title:LoonFramework
*</p>
*<p>
*Description:
*</p>
*<p>
*Copyright:Copyright(c)2007
*</p>
*<p>
*Company:LoonFramework
*</p>
*
*
@author chenpeng
*@email:ceponline@yahoo.com.cn
*
@version 0.1
*/

public class HtmlLable extends JPanel ... {
// 內(nèi)置了本地系統(tǒng)桌面操作支持
private Desktopdesktop;

private static final long serialVersionUID = 1L ;

// html內(nèi)容
private static final StringHTML_TEXT = " <html><fontcolor='red'><a>支持SOFF,插件無罪</a></font> " ;

public HtmlLable() ... {
super ( new BorderLayout());
final JLabellabel0 = new JLabel( " 普通的JLabel " );
final JLabellabel1 = new JLabel(HTML_TEXT);
final JLabellabel2 = new JLabel(HTML_TEXT) ... {

private static final long serialVersionUID = 1L ;

// 設(shè)定Enabled樣式
public void setEnabled( boolean b) ... {
super .setEnabled(b);
setForeground(b
? (Color)UIManager.get( " Label.foreground " )
:(Color)UIManager.get(
" Label.disabledForeground " ));
}

}
;
final JLabellabel3 = new JLabel(HTML_TEXT) ... {
private static final long serialVersionUID = 1L ;

// 陰影
private BufferedImageshadow;

// 設(shè)定Enabled樣式
public void setEnabled( boolean b) ... {
setForeground(b
? (Color)UIManager.get( " Label.foreground " )
:(Color)UIManager.get(
" Label.disabledForeground " ));
if ( ! b) ... {
BufferedImagesource
= new BufferedImage(getWidth(),
getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics2Dg2
= source.createGraphics();
g2.setPaint(
new Color( 0 , 0 , 0 , 0 ));
g2.fillRect(
0 , 0 ,getWidth(),getHeight());
paint(g2);
g2.dispose();
ColorConvertOpcolorConvert
= new ColorConvertOp(ColorSpace
.getInstance(ColorSpace.CS_GRAY),
null );
shadow
= colorConvert.filter(source, null );
}

super .setEnabled(b);
}


public void paintComponent(Graphicsg) ... {
if (isEnabled()) ... {
super .paintComponent(g);
}
else ... {
if (shadow != null )
g.drawImage(shadow,
0 , 0 , this );
}

}

}
;

/***/ /**
*設(shè)定為html
*/

final JEditorPaneeditor1 = new MyHtmlEdit( " text/html " ,HTML_TEXT);
editor1.setOpaque(
false );
editor1.setEditable(
false );

final JEditorPaneeditor2 = new MyHtmlEdit( " text/html " ,HTML_TEXT);
editor2.setOpaque(
false );
editor2.setEditable(
false );

editor2.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES,
Boolean.TRUE);
editor2.setFont((Font)UIManager.get(
" Label.font " ));

JPanelbox
= new JPanel( new GridLayout( 2 , 3 ));
box.add(makePanel(
" JLabel " ,label0));
box.add(makePanel(
" JLabel+Html " ,label1));
box.add(makePanel(
" JLabel+Html+ " ,label2));
box.add(makePanel(
" JLabel+Html++ " ,label3));
box.add(makePanel(
" JEditorPane " ,editor1));
box.add(makePanel(
" JEditorPane+ " ,editor2));

JCheckBoxcheck
= new JCheckBox( " setEnabled " , true );
check.setAction(
new AbstractAction( " setEnabled " ) ... {
private static final long serialVersionUID = 1L ;

public void actionPerformed(ActionEvente) ... {
boolean flag = ((JCheckBox)e.getSource()).isSelected();
setVisible(
false );
label0.setEnabled(flag);
label1.setEnabled(flag);
label2.setEnabled(flag);
label3.setEnabled(flag);
editor1.setEnabled(flag);
editor2.setEnabled(flag);
setVisible(
true );
}

}
);

add(check,BorderLayout.NORTH);
add(box,BorderLayout.CENTER);
desktop
= Desktop.getDesktop();

}


/***/ /**
*自定義一個(gè)JEditorPane,用以處理html事件
*
*
@author chenpeng
*
*/

class MyHtmlEdit extends JEditorPane implements HyperlinkListener ... {
/***/ /**
*
*/

private static final long serialVersionUID = 1L ;

public MyHtmlEdit(Stringtype,Stringtext) ... {
super (type,text);
addHyperlinkListener(
this );

}


public void hyperlinkUpdate(HyperlinkEvente) ... {

if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) ... {
try ... {
// 在本地瀏覽器中打開uri(jdk1.6后由于強(qiáng)化了awt,就不用再自己寫本地瀏覽器調(diào)用了)
desktop.browse(e.getURL().toURI());

}
catch (IOExceptionex) ... {
ex.printStackTrace();
}
catch (URISyntaxExceptionex) ... {
ex.printStackTrace();
}


}


}

}


/***/ /**
*創(chuàng)建面板
*
*
@param title
*
@param label
*
@return
*/

private JPanelmakePanel(Stringtitle,JComponentlabel) ... {
JPanelp
= new JPanel( new GridLayout( 1 , 1 ));
p.setBorder(BorderFactory.createTitledBorder(title));
p.add(label);
return p;
}


public static void main(String[]args) ... {
EventQueue.invokeLater(
new Runnable() ... {
public void run() ... {
createGUI();
}

}
);
}


public static void createGUI() ... {

JFrameframe
= new JFrame( " 在Swing中使用Html標(biāo)簽 " );
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(
new Dimension( 450 , 200 ));

frame.getContentPane().add(
new HtmlLable());

frame.setResizable(
false );
frame.setLocationRelativeTo(
null );
// jdk1.6新項(xiàng),置頂
frame.setAlwaysOnTop( true );
frame.setVisible(
true );
}


}


效果圖:
在Swing中使用Html標(biāo)簽


這時(shí)的Swing,既可以實(shí)現(xiàn)Swing原有組件功能,也可以接受Html操作,可說是JavaGUI技術(shù)中為數(shù)不多的亮點(diǎn)之一。

在Swing中使用Html標(biāo)簽


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲精品专区一区二区三区 | 国产视频二区在线观看 | 亚洲 欧洲 自拍 另类 校园 | 精品国产一区二区三区四区色 | 欧美精品亚洲精品日韩经典 | 狠狠色婷婷丁香综合久久韩国 | 91亚洲免费| 免费国产免费福利视频 | 91视频免费看 | 日韩视频 中文字幕 视频一区 | 亚洲91在线| 国产精品色图 | 欧美成人免费一区在线播放 | h在线观看免费 | 亚洲欧美色图片 | www.xxxx欧美| 久射网 | 国产午夜亚洲精品不卡福利 | 一道本一区二区三区 | 久久成人18| 天天综合色网 | 亚洲一区二区三区免费看 | 97影院午夜在线观看琪琪 | 欧美日本国产 | 成 人 黄 色 大 片 | 91成人午夜性a一级毛片 | 香蕉视频在线观看黄 | 欧洲毛片真人 | 国产精品线在线精品国语 | 一a一片一级一片啪啪 | 国产四虎精品 | 久久久久青草线蕉亚洲麻豆 | 欧美在线色 | 亚洲精品人成无码中文毛片 | 另类重口性色老妇 | 久久伊人在 | 三人性free孕交欧美 | 91青青青 | 一级黄色录像免费观看 | 亚洲欧美在线中文字幕不卡 | 亚洲国产99999在线精品一区 |