JPopupMenu的不錯用法--提示功能表 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
有人在某論壇提出一些IDE的"."之後會出現一個提示性的小視窗的實作問題
姑且不論他的model中的樹狀節點如何推論.先由view的方面來看他的實作 這就可以由JPopupMenu來思考,JPopupMenu是一個不錯的載具 參考下以的實作文章: ========原文出處 http://blog.csdn.net/netwarning/archive/2007/03/16/1531711.aspx ======== JPopupMenu是對於Swing開發者是在熟悉不過的組件了,不過大部分人只將其作為右擊彈出菜單使用,其實JPopupMenu還可以有很多用途,可以說只要是需要彈出式效果的都可以用其實現。例如我們用開發工具輸入import java.util.當輸入「.」時會自動彈出提示框選項,以下的小程序展示了這樣的效果: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SwingConstants; public class PopupTip extends JFrame { String[] messages = new String[] { "getNetworkFromTWaver", "getTreeFromTWaver", "getTableFromTWaver", "getPropertySheetFromTWaver", "getTreeTableFromTWaver", "getChartFromTWaver", "getRPCFromTWaver", "getGUIFrameworkFromTWaver", "getFantasticIdeaFromTWaver", }; JLabel label = new JLabel("Please Select Item"); JList list = new JList(messages); JComponent tip = new JScrollPane(list); JTextArea text = new JTextArea(); JPopupMenu popup = new JPopupMenu(); public PopupTip() { super("Please Select Item" ); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(new JScrollPane(text), BorderLayout.CENTER); this.tip.setPreferredSize(new Dimension(400, 100)); this.label.setForeground(Color.BLUE); this.label.setHorizontalAlignment(SwingConstants.CENTER); this.popup.setLayout(new BorderLayout()); this.popup.add(label, BorderLayout.NORTH); this.popup.add(tip, BorderLayout.CENTER); this.text.setBackground(Color.BLACK); this.text.setForeground(Color.GREEN); this.text.setCaretColor(Color.WHITE); this.text.addKeyListener(new KeyAdapter() { public void keyReleased(KeyEvent e) { if(popup.isShowing()){ popup.setVisible(false); }else if (e.getKeyCode() == KeyEvent.VK_PERIOD){ Point point = text.getCaret().getMagicCaretPosition(); if(point != null){ popup.show(text, point.x, point.y); } text.requestFocus(); } } }); } public static void main(String[] args) { PopupTip ui = new PopupTip(); ui.setSize(400, 200); ui.show(); } } =====原文出處 http://blog.csdn.net/netwarning/archive/2007/03/16/1531711.aspx ========== 作業: 試實作類似瀏覽器網址列中,打了一兩個字元後,上例中的JList會選到相對的元素列 (且而JList要捲到可以看到那個元素列才行),如果在網址列中,按了"上下方向鍵"後,PopupMenu的反白會上下移動,相對的,上例的JTextField中,會出現反白元素的字串 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |