日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

在Swing中使用Html標簽

系統 1788 0
在Swing中,有時可能會出現一些較為復雜的樣式表現需求,如果單純通過代碼實現,往往得不償失。這時,我們就可以利用html標簽,在組件中得到我們想要的效果。

例子如下:

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 ... {
// 內置了本地系統桌面操作支持
private Desktopdesktop;

private static final long serialVersionUID = 1L ;

// html內容
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 ;

// 設定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;

// 設定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 );
}

}

}
;

/***/ /**
*設定為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();

}


/***/ /**
*自定義一個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后由于強化了awt,就不用再自己寫本地瀏覽器調用了)
desktop.browse(e.getURL().toURI());

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


}


}

}


/***/ /**
*創建面板
*
*
@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標簽 " );
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新項,置頂
frame.setAlwaysOnTop( true );
frame.setVisible(
true );
}


}


效果圖:
在Swing中使用Html標簽


這時的Swing,既可以實現Swing原有組件功能,也可以接受Html操作,可說是JavaGUI技術中為數不多的亮點之一。

在Swing中使用Html標簽


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 临漳县| 聂拉木县| 沁水县| 渭源县| 启东市| 自贡市| 昆明市| 宣汉县| 连江县| 滁州市| 孝义市| 广东省| 江源县| 鹤山市| 古田县| 嘉峪关市| 广安市| 台中市| 杭州市| 普安县| 郎溪县| 绥江县| 镇安县| 建德市| 静安区| 上杭县| 兰考县| 张掖市| 温宿县| 锡林浩特市| 友谊县| 临颍县| 惠东县| 盐城市| 镶黄旗| 仁寿县| 嵊州市| 临猗县| 海南省| 栾川县| 石河子市|