TWaver - 專注UI技術

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

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

          Posted on 2010-08-19 14:59 TWaver 閱讀(1505) 評論(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
          很好,受益匪淺。。。

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


          網站導航:
           
          主站蜘蛛池模板: 漾濞| 辉南县| 锡林浩特市| 财经| 商水县| 宿松县| 武功县| 中牟县| 龙游县| 无棣县| 千阳县| 安吉县| 远安县| 田林县| 峨山| 清水县| 东城区| 方山县| 五大连池市| 田林县| 瑞安市| 岢岚县| 出国| 定日县| 赤水市| 宝山区| 海晏县| 文山县| 宜春市| 星座| 新蔡县| 九龙城区| 内黄县| 峨山| 宁海县| 周宁县| 周口市| 西畴县| 英吉沙县| 洪泽县| 杭州市|