黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 2059 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)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

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

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論