執行結果01.png

1. CustomJTabbedPaneUI之程式範例
public class CustomJTabbedPaneUI extends JTabbedPane {
String[] imgPath = null;
public CustomJTabbedPaneUI() {}
public CustomJTabbedPaneUI(String[] imgPath) {
this.imgPath = imgPath;
}
@Override
public void addTab(String title, final Component content) {
JPanel tab = new JPanel(new BorderLayout());
JLabel label = new JLabel(title);
label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 4));
JButton button = new CloseButton(imgPath);
button.setBorder(BorderFactory.createEmptyBorder());
button.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
removeTabAt(indexOfComponent(content));
}
});
tab.add(label, BorderLayout.WEST);
tab.add(button, BorderLayout.EAST);
tab.setOpaque(false);
tab.setBorder(BorderFactory.createEmptyBorder(2, 1, 1, 1));
super.addTab(title, content);
setTabComponentAt(getTabCount() - 1, tab);
}
}

Elsa 發表在 痞客邦 留言(0) 人氣()



BloggerAds問卷與市場調查的採樣分析,藉由問卷調查出的結果,讓我們可以快速釐清個人或群眾的想法。無論是口碑行銷、學術研究、專案分析、議題探討、意見回饋收集,使用問卷可以達到非常多的正面目的。有時可以讓一個好的研究產生量化的理論根據,也可能讓一個好的產品有優秀的改進等,可說是正面用途廣泛。

Elsa 發表在 痞客邦 留言(0) 人氣()

執行結果01.png
1. CustomSplitPaneUI之部分程式範例
public class CustomSplitPaneUI extends BasicSplitPaneUI {
private static Color BG_COLOR = Color.BLACK;
private static Color BG_SHADOW_COLOR = Color.WHITE;
private static Color ARROW_COLOR = Color.WHITE;
private static Color ARROW_BLOCK_BG_COLOR = Color.BLACK;
private static Color ARROW_BLOCK_BG_SHADOW_COLOR = Color.WHITE;
private static int ONE_TOUCH_BUTTON_SIZE = -1;
//private static final SearchSplitPaneUI cornerButtonUI = new SearchSplitPaneUI();
public CustomSplitPaneUI() {
super();
}
public static ComponentUI createUI(JComponent c) {
return new CustomSplitPaneUI();
}
public void setDividerBackground(Color bgColor, Color bgShadowColor) {
BG_COLOR = bgColor;
BG_SHADOW_COLOR = bgShadowColor;
}
public void setArrowBtnBackground(Color bgColor) {
ARROW_COLOR = bgColor;
}
public void setArrowBlockBackground(Color bgColor, Color bgShadowColor) {
ARROW_BLOCK_BG_COLOR = bgColor;
ARROW_BLOCK_BG_SHADOW_COLOR = bgShadowColor;
}
public void setOneTouchButtonSize(int size) {
// 在此範例中,OneTouchButton size 只有4種:6-9
if(size > 9)
ONE_TOUCH_BUTTON_SIZE = 9;
else if(size < 6)
ONE_TOUCH_BUTTON_SIZE = 6;
else
ONE_TOUCH_BUTTON_SIZE = size;
}

Elsa 發表在 痞客邦 留言(0) 人氣()

執行結果01.png
1. 客製JSplitPanel之程式範例
// 設定 splitPane Divider 與 leftButton、rightButton 之背景顏色
splitPane.setUI(new BasicSplitPaneUI() {
@Override
public BasicSplitPaneDivider createDefaultDivider() {
return new BasicSplitPaneDivider(this) {
@Override
public void paint(Graphics g) {
g.setColor(new Color(226,213,186));
g.fillRect(0, 0, getSize().width, getSize().height);
super.paint(g);
}
};
}
});
BasicSplitPaneDivider divider = (((BasicSplitPaneUI) splitPane.getUI()).getDivider());
for (Component c: divider.getComponents()) {
if (c instanceof JButton) {
JButton b = (JButton) c;
b.setBackground(new Color(226,213,186));
}
}
divider.setBorder(BorderFactory.createLineBorder(new Color(102,51,0), 2));

Elsa 發表在 痞客邦 留言(0) 人氣()



BloggerAds問卷與市場調查的採樣分析,藉由問卷調查出的結果,讓我們可以快速釐清個人或群眾的想法。無論是學術研究、專案分析、議題探討、意見回饋收集,使用問卷可以達到非常多的正面目的。有時可以讓一個好的研究產生量化的理論根據,也可能讓一個好的產品有優秀的改進等,可說是正面用途廣泛。

Elsa 發表在 痞客邦 留言(0) 人氣()

執行結果01.png
1. 客製JSplitPanel之程式範例
public class JSplitPanelDemo01 extends JPanel {
JPanel panel01, panel02;
JSplitPane splitPane;
public JSplitPanelDemo01() {
this.setLayout(new BorderLayout());
UIManager.put("SplitPane.oneTouchButtonSize", 8); // 置頂 or 置底 按鈕 大小
UIManager.put("SplitPane.oneTouchButtonOffset", 10); // 置頂 or 置底 按鈕 離左邊的距離
UIManager.put("SplitPaneDivider.draggingColor", Color.PINK); // 拖曳 Divider 時的顏色
panel01 = new JPanel();
panel02 = new JPanel();
panel01.setPreferredSize(new Dimension(400, 200));
panel01.add(new JButton("第一個按鈕"));
panel01.setBackground(Color.RED);
panel02.setPreferredSize(new Dimension(400, 140));
panel02.setBackground(Color.GREEN);
splitPane = new JSplitPane() {
@Override public void updateUI() {
super.updateUI();
BasicSplitPaneDivider divider = ((BasicSplitPaneUI) getUI()).getDivider();
/* 設置 Divider 邊框之顏色
* 同於 UIManager.put("SplitPaneDivider.border", BorderFactory.createLineBorder(Color.BLUE, 3));
* divider.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 3, Color.BLUE));
*/
divider.setBorder(BorderFactory.createLineBorder(Color.BLUE, 3));
// 設置 Divider 背景顏色
divider.setBackground(Color.ORANGE);
}
};
// 設置 上下放置 之 內容
splitPane.setLeftComponent(panel01);
splitPane.setRightComponent(panel02);
// 顯示置頂 or 置底 按鈕,同於 UIManager.put("SplitPane.centerOneTouchButtons", true);
splitPane.setOneTouchExpandable(true);
// 設置 分割之方向 (JSplitPane.VERTICAL_SPLIT / JSplitPane.HORIZONTAL_SPLIT)
splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
// 設置 Divider 之 寬度
splitPane.setDividerSize(20);
// 設置 置頂 or 置底 按鈕 背景顏色
BasicSplitPaneDivider divider = ((BasicSplitPaneUI) splitPane.getUI()).getDivider();
divider.setBackground(Color.ORANGE);
for (Component c: divider.getComponents()) {
if (c instanceof JButton) {
JButton b = (JButton) c;
b.setBackground(Color.ORANGE);
}
}
this.add(splitPane);
this.setPreferredSize(new Dimension(400, 240));
}

Elsa 發表在 痞客邦 留言(0) 人氣()

執行結果.png
在此範例中,主要用於「判斷字串中,是否包含大小寫英文字母、數字、特殊符號,並且至少各有一個英文字母及數字在其中,而總長度最少為8()以上」,而如有其他需求的話,也能依需求增刪減程式碼。

Elsa 發表在 痞客邦 留言(0) 人氣()



分享BloggerAds問卷,邀請朋友們加入市場調查採樣

Elsa 發表在 痞客邦 留言(0) 人氣()

MsgListPanel_樣版.png
1. 設置Table Model –MsgTableModel之程式
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
/**
* <code>MsgTableModel</code>
*
* @author Elsa
*/
public class MsgTableModel extends AbstractTableModel {
private List<Object> listData;
public MsgTableModel() {
listData = new ArrayList<Object>();
}
public void addRow(Object msgComponent) {
listData.add(msgComponent);
int listLen = listData.size();
this.fireTableRowsInserted(listLen - 1, listLen - 1);
}
@Override
public int getRowCount() {
return listData.size();
}
@Override
public int getColumnCount() {
return 1;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return listData.get(rowIndex);
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
}

Elsa 發表在 痞客邦 留言(0) 人氣()

執行結果.png
1. 話嘴向左之泡泡對話框程式範例
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JPanel;
/**
*
* @author Elsa
*/
public class LeftArrowBubble extends JPanel {
private int strokeThickness = 5;
private int padding = strokeThickness / 2;
private int arrowSize = 6;
private int radius = 10;
private Color bubblecolor;
public LeftArrowBubble() {
bubblecolor = new Color(255, 199, 143);
}
public void setBubbleColor(Color color) {
this.bubblecolor = color;
}
public Color getBubbleColor() {
return bubblecolor;
}
@Override
protected void paintComponent(final Graphics g) {
final Graphics2D graphics2D = (Graphics2D) g;
// 1.設置圖形之外框線條為具平滑線條(非鋸齒狀)
RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
graphics2D.setRenderingHints(qualityHints);
// 2.設置圖形之背景顏色與線條粗組
graphics2D.setColor(getBubbleColor());
graphics2D.setStroke(new BasicStroke(strokeThickness));
// 3.繪製具圓角之方框範圍
int x = padding + strokeThickness + arrowSize;
int width = getWidth() - arrowSize - (strokeThickness * 2);
int height = getHeight() - strokeThickness;
graphics2D.fillRect(x, padding, width, height);
RoundRectangle2D.Double rect = new RoundRectangle2D.Double(x, padding, width, height, radius, radius);
// 4.繪製對話之話嘴的部分
Polygon arrow = new Polygon();
arrow.addPoint(14, 6);
arrow.addPoint(arrowSize + 2, 10);
arrow.addPoint(14, 12);
// 5.將二個圖形加入 area中,並利用 draw() 方法畫出指定的圖形
Area area = new Area(rect);
area.add(new Area(arrow));
graphics2D.draw(area);
}
}

Elsa 發表在 痞客邦 留言(0) 人氣()

執行前之樣版.png
1. 圓形頭像之程式範例
import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
*
* @author Elsa
*/
public class RoundImageIconObject {
public static ImageIcon getRoundImageIcon(String url) {
try {
BufferedImage master = ImageIO.read(RoundImageIconObject.class.getResource(url));
int diameter = Math.min(master.getWidth(), master.getHeight());
BufferedImage mask = new BufferedImage(master.getWidth(), master.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = mask.createGraphics();
applyQualityRenderingHints(g2d);
g2d.fillOval(0, 0, diameter - 1, diameter - 1);
g2d.dispose();
BufferedImage masked = new BufferedImage(diameter, diameter, BufferedImage.TYPE_INT_ARGB);
g2d = masked.createGraphics();
applyQualityRenderingHints(g2d);
int x = (diameter - master.getWidth()) / 2;
int y = (diameter - master.getHeight()) / 2;
g2d.drawImage(master, x, y, null);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_IN));
g2d.drawImage(mask, 0, 0, null);
g2d.dispose();
return new ImageIcon(masked);
} catch (Exception e){
e.printStackTrace();
}
return null;
}
private static void applyQualityRenderingHints(Graphics2D g2d) {
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
}
}

Elsa 發表在 痞客邦 留言(0) 人氣()

1. 監聽視窗大小變化
JFrame裡設置addWindowStateListener() 方法,可監聽視窗大小變化之事件,並依需求撰寫所需之程式。

Elsa 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。