Java Swing組件定制CheckBox示例
本文實(shí)例講述了Java Swing組件定制CheckBox。分享給大家供大家參考,具體如下:
先來看看運(yùn)行效果:

具體代碼如下:
package themedemo;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.RenderingHints;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Painter;
import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
public class CheckBoxSkinDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (UIManager.LookAndFeelInfo laf : UIManager
.getInstalledLookAndFeels()) {
if ("Nimbus".equals(laf.getName())) {
try {
UIManager.setLookAndFeel(laf.getClassName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
for (Map.Entry<Object, Object> entry : UIManager
.getLookAndFeelDefaults().entrySet()) {
if ((entry.getKey().toString()).startsWith("CheckBox")) {
System.out.println(entry.getKey() + " = "
+ entry.getValue());
}
}
JFrame frame = new JFrame("www.dbjr.com.cn - CheckBox Skining Demo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
JPanel panel = new JPanel(new GridLayout(0, 1, 20, 20));
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
panel.setBackground(Color.darkGray);
UIDefaults checkBoxDefaults = new UIDefaults();
checkBoxDefaults.put("CheckBox.iconPainter",
new Painter<JComponent>() {
public void paint(Graphics2D g, JComponent c,
int w, int h) {
g.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.WHITE);
g.fillRect(1, 1, w - 4, h - 4);
g.setColor(Color.LIGHT_GRAY);
g.drawRect(1, 1, w - 4, h - 4);
}
});
checkBoxDefaults.put("CheckBox[Selected].iconPainter",
new Painter<JComponent>() {
public void paint(Graphics2D g, JComponent c,
int w, int h) {
g.setRenderingHint(
RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setStroke(new BasicStroke(2f));
g.setColor(Color.WHITE);
g.fillRect(1, 1, w - 4, h - 4);
g.setColor(Color.DARK_GRAY);
g.drawPolyline(new int[] { 2, w / 3, w - 2 },
new int[] { h / 2 - 1, h - 4, 0 }, 3);
g.setColor(Color.LIGHT_GRAY);
g.drawRect(1, 1, w - 4, h - 4);
}
});
JCheckBox checkBox = new JCheckBox("myCheckBox");
panel.add(checkBox);
checkBox.putClientProperty("Nimbus.Overrides", checkBoxDefaults);
checkBox.putClientProperty("Nimbus.Overrides.InheritDefaults",
false);
// Add a normal themed slider for comparison
JCheckBox normalCheckBox = new JCheckBox("normalCheckBox");
panel.add(normalCheckBox);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java 最重要布局管理器GridBagLayout的使用方法
- Java布局管理器使用方法
- Java Swing組件布局管理器之FlowLayout(流式布局)入門教程
- Java卡片布局管理器解釋及實(shí)例
- Java彈簧布局管理器使用方法詳解
- Java編程使用箱式布局管理器示例【基于swing組件】
- Java實(shí)現(xiàn)Swing組件定制Button示例
- Java Swing組件定制RadioButton示例
- Java實(shí)現(xiàn)的可選擇及拖拽圖片的面板功能【基于swing組件】
- java實(shí)現(xiàn)的計(jì)算器功能示例【基于swing組件】
- Java編程使用卡片布局管理器示例【基于swing組件】
相關(guān)文章
Java編程中利用InetAddress類確定特殊IP地址的方法
這篇文章主要介紹了Java編程中利用InetAddress類確定特殊IP地址的方法,InetAddress類是Java網(wǎng)絡(luò)編程中一個(gè)相當(dāng)實(shí)用的類,需要的朋友可以參考下2015-11-11
Java操作另一個(gè)Java程序使其重啟的簡(jiǎn)單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狫ava操作另一個(gè)Java程序使其重啟的簡(jiǎn)單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案
這篇文章主要介紹了Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Java之字節(jié)碼以及優(yōu)勢(shì)案例講解
這篇文章主要介紹了Java之字節(jié)碼以及優(yōu)勢(shì)案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
JAVA多線程與并發(fā)學(xué)習(xí)總結(jié)分析
以下是對(duì)小編對(duì)JAVA多線程與并發(fā)的學(xué)習(xí)進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下2013-08-08

