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);
    }
}

 

2. CloseButton之程式範例

文章標籤

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

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

自從全新BloggerAds上線之後,問卷專區一直深受大家喜愛,每天都有相當踴躍的會員或網友加入填答問卷、進行市場調查或是話題的跟進,讓BloggerAds編輯群們感到十分高興,也更加努力設計出更多元、豐富的問卷,讓大家在作答中能夠更踴躍、愉快,同時也能得知社會大眾們在想些什麼。

 

同時,BloggerAds也運用了問卷專區,逐步地在進行未來正面方向的調整。

例如:

-結合時事脈絡來了解消費者習慣:三大節慶之一的端午節,你又是怎麼規劃度過呢?快來瞧瞧吧!

-我們先前做過的消費習慣大調查:還在使用傳統燈泡嗎?在新型LED燈泡的推廣下,你是否已經更換使用LED燈泡呢?

-用問卷來了解大家對跑步姿勢的看法:跑步姿勢大調查

-藉由時事議題來了解大家的期待:2017 NBA季後賽大預測!

 

現在,BloggerAds為了積極推動問卷專區的發展,成為專業的市場調查單位。除了原有的踩地雷式贈送Q幣 或 隨機抽小禮物的機制外,更希望藉此來吸引更多會員與編輯群互動分享!BloggerAds編輯群用心經營每一次的問卷調查,藉此希望和會員、網友間產生良好的互動橋樑,同時呼應「你的加入,影響整個世界!」,透過BloggerAds的力量,累積眾人的人氣與期待,讓我們的意見都能在每個不同的地方得到響應!

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

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;
    }

public func以讓使用者自行設定DividerArrow Button背景色與陰影色

文章標籤

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

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));

 

2. 執行結果

執行結果01.png

▲生成時之樣貌

文章標籤

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

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

自從全新BloggerAds上線之後,問卷專區一直深受大家喜愛,每天都有相當踴躍的會員或網友加入填答問卷、進行市場調查或是話題的跟進,讓BloggerAds編輯群們感到十分高興,也更加努力設計出更多元、豐富的問卷,讓大家在作答中能夠更踴躍、愉快,同時也能得知社會大眾們在想些什麼。

 

同時,BloggerAds也運用了問卷專區,逐步地在進行未來正面方向的調整。

例如:

-我們先前做過的消費習慣大調查:要有好的睡眠品質,合適的枕頭就相對重要,在選擇枕頭上你又有什麼秘訣呢?

-用問卷來了解大家在臉部清潔的想法:清潔臉部大調查

-藉由時事議題來了解大家的期待:「月亮杯」已經合法上市,請問您聽過「月亮杯」嗎?

 

 

現在,BloggerAds為了積極推動問卷專區的發展,成為專業的市場調查單位。除了原有的踩地雷式贈送Q幣 或 隨機抽小禮物的機制外,更希望藉此來吸引更多會員與編輯群互動分享!BloggerAds編輯群用心經營每一次的問卷調查,藉此希望和會員、網友間產生良好的互動橋樑,同時呼應「你的加入,影響整個世界!」,透過BloggerAds的力量,累積眾人的人氣與期待,讓我們的意見都能在每個不同的地方得到響應!

 

 

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

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));
    }

 

2. 主執行之程式範例

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

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

 

1. 主程式範例

/**
 * 判斷字串中,是否包含大小寫英文字母、數字、特殊符號,並且至少各有一個英文字母及數字在其中,而總長度最少為8碼(含)以上
 * @author Elsa
 */
public class PasswordDecideDemo {
    public static void main(String... args) {
        System.out.println("1: " + isMeetPwdRule("a"));
        System.out.println("2: " + isMeetPwdRule("2"));
        System.out.println("3: " + isMeetPwdRule("a3b"));
        System.out.println("4: " + isMeetPwdRule("abcdefg"));
        System.out.println("5: " + isMeetPwdRule("951348206899"));
        System.out.println("6: " + isMeetPwdRule("a@ab5byuf"));
        System.out.println("7: " + isMeetPwdRule("bdg69wtyu"));
    }

 

2. 判斷字串之方法範例

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

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

問卷與市場調查的採樣分析,在我們生活中四處都存在著,有時候透過問卷的結果,可以讓我們釐清很多個人或群眾認知。無論是學術研究、專案分析、議題探討、意見回饋收集,使用問卷可以達到非常多的正面目的。有時可以讓一個好的研究產生量化的理論根據,也可能讓一個好的產品有優秀的改進等,可說是正面用途廣泛。

自從全新BloggerAds上線之後,問卷專區一直深受大家喜愛,每天都有相當踴躍的會員或網友加入填答問卷、進行市場調查或是話題的跟進,讓BloggerAds編輯群們感到十分高興,也更加努力設計出更多元、豐富的問卷,讓大家在作答中能夠更踴躍、愉快,同時也能得知社會大眾們在想些什麼。

 

同時,BloggerAds也運用了問卷專區,逐步地在進行未來正面方向的調整。

例如:

-我們先前做過的社會議題大調查:匆匆忙忙2016就要過去了,在各種社會議題中你有會關注哪些呢?

-用問卷來了解大家在咖啡方面的想法:咖啡大調查!關於咖啡的喜好,請回答下列問題。

-藉由時事議題來了解大家的期待:一例一休實施了一段時間,是否有影響到你的生活呢?快來告訴W編吧!

 

現在,BloggerAds為了積極推動問卷專區的發展,成為專業的市場調查單位。除了原有的踩地雷式贈送Q幣 或 隨機抽小禮物的機制外,更希望藉此來吸引更多會員與編輯群互動分享!BloggerAds編輯群用心經營每一次的問卷調查,藉此希望和會員、網友間產生良好的互動橋樑,同時呼應「你的加入,影響整個世界!」,透過BloggerAds的力量,累積眾人的人氣與期待,讓我們的意見都能在每個不同的地方得到響應!

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

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;
    }
}

 

2. 設置客製化之訊息樣版與程式

MsgListPanel_樣版.png

public class MsgListPanel extends javax.swing.JPanel {

   /**
    * Creates new form MsgListPanel
    */
    public MsgListPanel(String account, String msg, String time) {
        initComponents();        

        labAcount.setText(account);
        labMsg.setText(msg);
        labTime.setText(time);
        if(account.length() == 0) {
            labMsg.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            labMsg.setForeground(new Color(41, 148, 255));
            labImg.setVisible(false);
        }
    }

 

3. 設置MsgListComponent以取得各個訊息相關資訊之程式

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

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);
    }
}

 

2. 話嘴向右之泡泡對話框程式範例

文章標籤

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