<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術

    http://twaver.servasoft.com/
    posts - 171, comments - 191, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    老醋換新瓶,不一樣的JPopupMenu用法

    Posted on 2010-08-19 14:59 TWaver 閱讀(1504) 評論(2)  編輯  收藏

    JPopupMenu是對于Swing開發者是在熟悉不過的組件了,不過大部分人只將其作為右擊彈出菜單使用,其實JPopupMenu還可以有很多用途,可以說只要是需要彈出式效果的都可以用其實現。例如我們用開發工具輸入import java.util.當輸入“.”時會自動彈出提示框選項,以下的小程序展示了這樣的效果:

     1import java.awt.BorderLayout;
     2import java.awt.Color;
     3import java.awt.Dimension;
     4import java.awt.Point;
     5import java.awt.event.KeyAdapter;
     6import java.awt.event.KeyEvent;
     7
     8import javax.swing.JComponent;
     9import javax.swing.JFrame;
    10import javax.swing.JLabel;
    11import javax.swing.JList;
    12import javax.swing.JPopupMenu;
    13import javax.swing.JScrollPane;
    14import javax.swing.JTextArea;
    15import javax.swing.SwingConstants;
    16import javax.swing.SwingUtilities;
    17
    18import twaver.TWaverUtil;
    19
    20public class PopupTipDemo extends JFrame {
    21
    22    String[] messages = new String[] {
    23            "getTWaverJava()",
    24            "getTWaverWeb()",
    25            "getTWaverFlex()",
    26            "getTWaverDotNET()",
    27            "getTWaverGIS()",
    28            "getTWaverHTML5()",
    29            "getTWaverJavaFX()",
    30            "getTWaver", }
    ;
    31
    32    JLabel label = new JLabel("TWaver makes everything easy!");
    33    JList list = new JList(messages);
    34    JComponent tip = new JScrollPane(list);
    35    JTextArea text = new JTextArea();
    36    JPopupMenu popup = new JPopupMenu();
    37
    38    public PopupTipDemo() {
    39        super("www.servasoftware.com");
    40        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    41        this.getContentPane().setLayout(new BorderLayout());
    42        this.getContentPane().add(new JScrollPane(text), BorderLayout.CENTER);
    43        this.tip.setPreferredSize(new Dimension(23080));
    44        this.label.setForeground(Color.BLUE);
    45        this.label.setHorizontalAlignment(SwingConstants.CENTER);
    46        this.popup.setLayout(new BorderLayout());
    47        this.popup.add(label, BorderLayout.NORTH);
    48        this.popup.add(tip, BorderLayout.CENTER);
    49
    50        this.text.setText("// Try to press '.'\nimport twaver.Node;\nimport twaver.Link;\nimport twaver.network");
    51        this.text.setBackground(Color.WHITE);
    52        this.text.setForeground(Color.BLUE);
    53        this.text.setCaretColor(Color.RED);
    54
    55        this.text.addKeyListener(new KeyAdapter() {
    56            public void keyReleased(KeyEvent e) {
    57                if (popup.isShowing()) {
    58                    popup.setVisible(false);
    59                }
     else if (e.getKeyCode() == KeyEvent.VK_PERIOD) {
    60                    Point point = text.getCaret().getMagicCaretPosition();
    61                    if (point != null{
    62                        popup.show(text, point.x, point.y);
    63                    }

    64                    text.requestFocus();
    65                }

    66            }

    67        }
    );
    68    }

    69
    70    public static void main(String[] args) {
    71        SwingUtilities.invokeLater(new Runnable() {
    72            public void run() {
    73                PopupTipDemo demo = new PopupTipDemo();
    74                demo.setSize(400200);
    75                TWaverUtil.centerWindow(demo);
    76                demo.setVisible(true);
    77            }

    78        }
    );
    79    }

    80}

    其實TWaver Java的Demo中的QuickSearch欄就有這么個下拉功能,twaver.swing.TDropDownSelector組件,這個封裝得非常好,以下寥寥幾行demo.DemoUtil中的代碼就實現了下拉效果,大家只要專注在自己下拉的內容即可

     1// create drop down selector
     2final TDropDownSelector selector = new TDropDownSelector(txtSearch, new JScrollPane(list)){
     3    public Dimension getSelectorSize(){
     4        int width = this.getSize().width;
     5        if(width < 200){
     6            width = 200;
     7        }

     8        return new Dimension(width, 320);
     9    }

    10}
    ;

    評論

    # re: 老醋換新瓶,不一樣的JPopupMenu用法  回復  更多評論   

    2010-08-19 20:02 by 日月雨林@gmail.com
    哈哈,很不錯啊

    # re: 老醋換新瓶,不一樣的JPopupMenu用法  回復  更多評論   

    2011-11-20 21:41 by
    很好,受益匪淺。。。

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产免费人视频在线观看免费| 99精品视频在线观看免费| 国产精品免费无遮挡无码永久视频| 亚洲?V无码成人精品区日韩| 亚洲欧美中文日韩视频| 成年性午夜免费视频网站不卡| 中国亚洲呦女专区| 成人在线免费观看| 国产精品久久亚洲一区二区| 日韩免费无码一区二区视频| 国产成人亚洲综合在线| 亚洲国产午夜福利在线播放| 好猛好深好爽好硬免费视频| 亚洲成AV人片在WWW色猫咪| 性xxxx视频免费播放直播 | 女同免费毛片在线播放| 亚洲AV无码成人网站久久精品大 | 亚洲熟女综合一区二区三区| 好男人视频在线观看免费看片| 亚洲成a人无码亚洲成av无码 | **一级一级毛片免费观看| 亚洲AV成人无码天堂| 国产免费观看青青草原网站| 一级特级aaaa毛片免费观看 | 亚洲高清无在码在线无弹窗 | 看成年女人免费午夜视频| 亚洲一本大道无码av天堂| 国产免费爽爽视频在线观看| 亚洲国产亚洲片在线观看播放| 免费永久在线观看黄网站| 三年片在线观看免费| 亚洲久悠悠色悠在线播放| 国产亚洲精品资在线| 猫咪免费人成网站在线观看| 羞羞的视频在线免费观看| 久久亚洲免费视频| 国产成人3p视频免费观看| 日韩精品无码一区二区三区免费| 亚洲AV一二三区成人影片| 亚洲午夜国产精品无码老牛影视| 成人免费AA片在线观看|