1. 程式人生 > >java swing 元件大全----測試Swing所有元件及其相應的事件

java swing 元件大全----測試Swing所有元件及其相應的事件

 

package testSwing;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.table.*;

/**
 * Swing 元件測試程式
 * 測試Swing所有元件及其相應的事件
 * @author 天翼.李 2003.4.17 晚23:14
 * @link http://www.robochina.org


 * @link [email protected]
 */
public class SwingTest02 extends JFrame
{
    /**
     * 主模組,初始化所有子模組,並設定主框架的相關屬性
     */
    public SwingTest02()
    {
        // 初始化所有模組
        MenuTest menuTest = new MenuTest();
        LeftPanel leftPanel = new LeftPanel();
        RightPanel rightPanel = new RightPanel();
        BottomPanel bottomPanel = new BottomPanel();
        CenterPanel centerPanel = new CenterPanel();
       
        // 設定主框架的佈局
        Container c = this.getContentPane();
        // c.setLayout(new BorderLayout())
        this.setJMenuBar(menuTest);
       
        c.add(leftPanel,BorderLayout.WEST);
        c.add(rightPanel,BorderLayout.EAST);
        c.add(centerPanel,BorderLayout.CENTER);
        c.add(bottomPanel,BorderLayout.SOUTH);
       
        // 利用無名內隱類,增加視窗事件
        this.addWindowListener(new WindowAdapter()
            {
                public void WindowClosing(WindowEvent e)
                {  
                    // 釋放資源,退出程式

 //                 System.exit(0)是將你的整個這個虛擬機器裡的內容都停掉了
//                 而dispose()只是關閉這個視窗,但是並沒有停止整個application
//                 exit() 無論什麼,記憶體都釋放了!也就是說連JVM都關閉了,記憶體里根本不可能還有什麼東西
//                 exit(0):0指程式正常退出
//                         1指程式有錯誤但是能正常退出


                    dispose();
                    System.exit(0);
                }
            });
           
       
       
        setSize(700,500);
        setTitle("Swing 元件大全簡體版");
        // 隱藏frame的標題欄,此功暫時關閉,以方便使用window事件
        // setUndecorated(true);
        setLocation(200,150);
        show();       
    }

    ////////////////////////////////////////////////////////////////////////////
    /**
     * 選單欄處理模組
     * JMenuBar --+
     *            --JMenu--+
     *                       --JMenuItem  --ActionListener
     *             
     */
    class MenuTest extends JMenuBar
    {
        private JDialog aboutDialog;
           
        /**
         * 選單初始化操作
         */   
        public MenuTest()
        {
            JMenu fileMenu = new JMenu("檔案");
            JMenuItem exitMenuItem = new JMenuItem("退出",KeyEvent.VK_E);
            JMenuItem aboutMenuItem = new JMenuItem("關於...",KeyEvent.VK_A);           
                                               
            fileMenu.add(exitMenuItem);
            fileMenu.add(aboutMenuItem);
           
            this.add(fileMenu);       
           
                   
            aboutDialog = new JDialog();
            initAboutDialog();
                       
            // 選單事件
            exitMenuItem.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    dispose();
                    System.exit(0);
                }
            });
           
            aboutMenuItem.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    // "關於"對話方塊的處理
                    aboutDialog.show();
                }
            });           
                       
        }
       
        /**
         * 返回關於對話方塊
         */
        public JDialog getAboutDialog()
        {
            return aboutDialog;
        }
       
        /**
         * 設定"關於"對話方塊的外觀及響應事件,操作和JFrame一樣都是在內容
         * 框架上進行的
         */
        public void initAboutDialog()
        {
            aboutDialog.setTitle("關於");
           
            Container con =aboutDialog.getContentPane();
            
            // Swing 中使用html語句
            Icon icon = new ImageIcon("smile.gif");
            JLabel aboutLabel = new JLabel("<html><b><font size=5>"+
            "<center>Swing 元件大全簡體版!"+"<br>天翼.李",icon,JLabel.CENTER);
                       
            //JLabel aboutLabel = new JLabel("Swing 元件大全簡體版!",icon,JLabel.CENTER);
            con.add(aboutLabel,BorderLayout.CENTER);
           
            aboutDialog.setSize(450,225);
            aboutDialog.setLocation(300,300);                       
            aboutDialog.addWindowListener(new WindowAdapter()
            {
                public void WindowClosing(WindowEvent e)
                {
                    dispose();
                }                   
            });           
        }
    }
   
    ////////////////////////////////////////////////////////////////////////////
    /**
     * 最左邊模組,繼承JPanel,初始化內容為JTree
     * JPanel--+
     *         --JTree
     */
    class LeftPanel extends JPanel
    {
        private int i = 0;
        public LeftPanel()
        {
           
            DefaultMutableTreeNode    root = new DefaultMutableTreeNode("Root");
            DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");
            DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");
           
            DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(""+i);
           
            root.add(child);       
            root.add(select);
            child.add(child1);   
           
            JTree tree = new JTree(root);
            tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
           
            // 每個節點的行高
            tree.setRowHeight(20);           
            tree.addTreeSelectionListener(new TreeSelectionListener ()
            {
                public void valueChanged(TreeSelectionEvent e)
                {
                    // 內隱類不能直接引用外部類tree,1.外部變數可申明為final 2.新建外部類的物件
                    JTree tree =(JTree)e.getSource();
                    DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
                    i++;
                    selectNode.add(new DefaultMutableTreeNode(""+i));
                }
            });           
           
            tree.setPreferredSize(new Dimension(100,300));
        //    tree.setEnabled(true);
            JScrollPane scrollPane = new JScrollPane(tree);
            //scrollPane.setSize(100,350);
            this.add(scrollPane);
        }
    }
   
    ////////////////////////////////////////////////////////////////////////////
    /**
     * 最下面層模組,繼承JPanel,初始化內容為進度條,並由定時器控制
     * JPanel--+
     *         --JProcessBar  --Timer
     */
    class BottomPanel extends JPanel
    {
        private JProgressBar pb;
        ////////////////////////////////////////
        //public class
        //////////////////////////////
        public BottomPanel()
        {
            pb = new JProgressBar();
            pb.setPreferredSize(new Dimension(680,20));
           
            // 設定定時器,用來控制進度條的處理
            Timer time = new Timer(1,new ActionListener()
            {
                int counter = 0;
                public void actionPerformed(ActionEvent e)
                {
                    counter++;
                    pb.setValue(counter);
                    Timer t = (Timer)e.getSource();
                   
                    // 如果進度條達到最大值重新開發計數
                    if (counter == pb.getMaximum())
                    {
                        t.stop();
                        counter =0;
                        t.start();
                    }                   
                }
            });
            time.start();
           
            pb.setStringPainted(true);
            pb.setMinimum(0);
            pb.setMaximum(1000);
            pb.setBackground(Color.white);
            pb.setForeground(Color.red);
                       
            this.add(pb);               
        }
       
        /**
         * 設定進度條的資料模型
         */
        public void setProcessBar(BoundedRangeModel rangeModel)
        {
            pb.setModel(rangeModel);
        }
    }
   
    ////////////////////////////////////////////////////////////////////////////
    /**
     * 最右邊模組,繼承JPanel,初始化各種按鈕
     * JPanel--+
     *         --JButton  --JToggleButton -- JList -- JCombox --JCheckBox ....
     */
    class RightPanel extends JPanel
    {
        public RightPanel()
        {
            this.setLayout(new GridLayout(8,1));       
           
           
            // 初始化各種按鈕
            JCheckBox checkBox = new JCheckBox("複選按鈕");           
            JButton button = new JButton("開啟檔案");
            button.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    JFileChooser file = new JFileChooser();
                    int result = file.showOpenDialog(new JPanel());
                    if (result ==file.APPROVE_OPTION)
                    {
                        String fileName = file.getSelectedFile().getName();                   
                        String dir = file.getCurrentDirectory().toString();
                          JOptionPane.showConfirmDialog(null,dir+"\\"+fileName,"選擇的檔案",JOptionPane.YES_OPTION);
                     }
                }
            });
            ////////////////////////////////////////
            //public
            //////////////////////////////////////////
                   
            JToggleButton toggleButton = new JToggleButton("雙態按鈕");
           
            ButtonGroup    buttonGroup = new ButtonGroup();
            JRadioButton radioButton1 = new JRadioButton("單選按鈕1",false);
            JRadioButton radioButton2 = new JRadioButton("單選按鈕2",false);
           
            // 組合框的處理
            JComboBox comboBox = new JComboBox();
            comboBox.setToolTipText("點選下拉列表增加選項");
            comboBox.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    JComboBox comboBox =(JComboBox)e.getSource();
                    comboBox.addItem("程式設計師");
                    comboBox.addItem("分析員");
                }
            });
           
            // 列表框的處理
            DefaultListModel litem = new DefaultListModel();
            litem.addElement("香蕉");
            litem.addElement("水果");
            JList list = new JList(litem);
           
           
            list.addListSelectionListener(new ListSelectionListener ()
            {
                public void valueChanged(ListSelectionEvent e)
                {
                    JList l = (JList)e.getSource();
                    Object s= l.getSelectedValue();
                    JOptionPane.showMessageDialog(null,s,"訊息框",JOptionPane.YES_OPTION);
                }
            });
           
            // 增加按鈕組
            buttonGroup.add(radioButton1);
            buttonGroup.add(radioButton2);
           
            // 增加各種按鈕到JPanel中顯示
            add(button);
            add(toggleButton);
            add(checkBox);
            add(radioButton1);           
            add(radioButton2);
            add(comboBox);
           
            add(list);
           
            this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,Color.LIGHT_GRAY,Color.blue));
        }       
    }
   
    ////////////////////////////////////////////////////////////////////////////
    /**
     * 中間層模組,繼承JPanel,初始化頁籤,並在頁籤中設定文字區,表格,
     * 文字區上下用分隔條分隔
     * JPanel--+
     *         -JTabbedPane--+
     *                          --Draw    --JTable  -JTextAreas -JText --JPopupMenu
     */
    class CenterPanel extends JPanel
    {
        public CenterPanel()
        {
            JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);
           
            JTextField textField = new JTextField("文字域,點選開啟<檔案按鈕>可選擇檔案");
            textField.setActionCommand("textField");
           
            JTextPane textPane = new JTextPane();
            textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));
            textPane.setText("編輯器,試著點選文字區,試著拉動分隔條。");
                       
            textPane.addMouseListener(new MouseAdapter ()
            {
                public void mousePressed (MouseEvent e)
                {
                    JTextPane textPane = (JTextPane)e.getSource();
                    textPane.setText("編輯器點選命令成功");
                //    textField.setText(""+textPane.getText());
                }
            });
           
            /*
            UpperCaseDocument doc = new Document();
            textField.setDocumentsetDocument(doc);
            doc.addDocumentListener(new DocumentListener()
            {
                public void changedUpdate(DocumentEvent e){}
                public void removeUpdate(DocumentEvent e){}
                public void insertUpdate(DocumentEvent e)
                {
                    Document text = (Document)e.getDocument();
                    text.setText("複製成功");
                }               
            });
            */
           
            JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,textField,textPane);
           
               
            JTable table = new JTable(10,10);
            //table.showHorizontalLines(true);
            //table.showVerticalLines(true);
            //table.gridColor(Color.blue);
           
            JPanel pane  = new JPanel();
            pane.add(table.getTableHeader(),BorderLayout.NORTH);
            pane.add(table);
                       
            tab.addTab("文字演示",splitPane);
            //tab.addTab(table.getTableHeader());
            tab.addTab("表格演示",pane);
            tab.setPreferredSize(new Dimension(500,600));
            this.add(tab);
            this.setEnabled(true);           
        }
    }
   
   
    public static void main(String args[])
    {
        // 設定主框架屬性,此處沒有使用,可開啟看看效果
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch  (Exception e){
         System.out.println("設定主框架屬性時出現異常");
        }
       
        new SwingTest02();                       
    }
}

相關推薦

java swing 元件大全----測試Swing所有元件及其相應事件

  package testSwing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; import javax.swing.even

java中File類的常用所有方法及其應用

建立: createNewFile()在指定位置建立一個空檔案,成功就返回true,如果已存在就不建立,然後返回false。 mkdir()  在指定位置建立一個單級資料夾。 mkdirs()  在指定位置建立一個多級資料夾。 renameTo(File dest)如果目標檔

java Swing元件大全超牛的例子

http://www.blogjava.net/tjsjrx2010/archive/2009/12/11/305663.htmlpackage com.mygame;import java.awt.BorderLayout;import java.awt.Color;imp

java Swing:獲取JFrame下的所有控制元件

獲取JFrame上的所有控制元件: 程式碼:  for(Component co:ui.getRootPane().getContentPane().getComponents()) {      Systen.out.println(co.getClass().toString());  //得到

JAVA第三次作業——Swing元件中Jist的運用

0x00  簡述 Swing是GUI(圖形使用者介面)開發工具包,內容豐富,簡單易用,所以本篇文章中只編寫Swing中的Jlist元件,其他Swing中的元件相關內容這裡筆者就不介紹了,文章中未涉及的元件讀者請自行去查閱相關資料。 0x01  Jframe框架

Java----AWT元件開發和Swing介面程式設計(一)

一、AWT元件開發 1、AWT入門        AWT是抽象視窗工具箱的縮寫,它為編寫圖形使用者介面提供了使用者介面,通過這個介面就可以繼承很多方法,省去了很多工作。AWT還能使應用程式更好地同用戶進行互動。        AWT中的容器是一種特殊

JAVA元件大全複選框,選項按鈕,複選方框,下拉式列表的使用介紹

7-1:使用JCheckBox元件: 類層次結構圖:    java.lang.Object      --java.awt.Component       --java.awt.Container         --javax.swing.JComponent            --javax.swi

vue $emit子元件傳出多個引數,如何在父元件中在接收所有引數的同時新增自定義引數

前言 很多時候用$emit攜帶引數傳出事件,並且又需要在父元件中使用自定義引數時,這時我們就無法接受到子元件傳出的引數了。找到了兩種方法可以同時新增自定義引數的方法。 方法一 子元件傳出單個引數時: // 子元件 this.$emit('test',this.param) // 父元件 @test=

【Stimulsoft Reports Java教程】複製報表之間的元件

下載Stimulsoft Reports Java最新版本 此示例顯示如何在不同報表之間複製相同元件StiPage,StiHeader等。例如,讓我們使用兩個報表OriginalReport和CustomReport。 首先,您需要從檔案反序列化報表。 StiReport origina

Lodop控制元件NewPage();測試輸出空白頁

LODOP.NewPage();和LODOP.NewPageA();是強制分頁語句,兩者的區別可檢視本部落格的相關博文:Lodop強制分頁LODOP.NewPage()和LODOP.NewPageA()可在列印項之間強制分頁,手動分頁,如果一個任務在不新增列印項的情況下一開始就分頁,結果會怎樣?如果強制分頁之

Hadoop體系所有元件預設埠列表

Why? Hadoop叢集元件太多,預設埠無法記住,有事後需要檢視,就在這裡羅列下這裡包含我們使用到的元件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 埠 作用 9000 fs.def

QT控制元件大全

總圖: V20170901增加部分控制元件。 1:動畫按鈕 1:可設定顯示的影象和底部的文字 2:可設定普通狀態圖片 3:可設定進入狀態圖片 4:可設定離開狀態圖片 5:按照比例自動居中繪製 2:柱狀標尺控制元件 1:可設定精確度

C#控制元件大全

C#控制元件及常用設計整理 1、窗體  1、常用屬性  (1)Name屬性:用來獲取或設定窗體的名稱,在應用程式中可通過Name屬性來引用窗體。  (2) WindowState屬性: 用來獲取或設定窗體的視窗狀態。 取值有三種:&nbs

朱曄和你聊Spring系列S1E8:湊活著用的Spring Cloud(含一個實際業務貫穿所有元件的完整例子)

本文會以一個簡單而完整的業務來闡述Spring Cloud Finchley.RELEASE版本常用元件的使用。如下圖所示,本文會覆蓋的元件有: Spring Cloud Netflix Zuul閘道器伺服器 Spring Cloud Netflix Eureka發現伺服器 Spring Cloud Net

5.13.1.2 jmeter元件-非測試元件—HTTP代理伺服器的使用

.HTTP代理伺服器錄製方法 1.新增執行緒組。開啟JMeter,左邊樹上有一個空的測試計劃,新增使用者定義變數等(以便變數替換)。點選該計劃的右鍵選單新增->執行緒組新增一個執行緒組。 2.新增Http代理伺服器。點選計劃的右鍵選單新增->非測試

5.13.1.3 jmeter元件-非測試元件—HTTP代理伺服器--HTTPS證書及其安裝

關於HTTPS證書 HTTP協議採用明文傳輸資料,如果是敏感資料,就不安全了,HTTPs(安全套接字層超文字傳輸協議)採用密文傳輸資料,在通訊中需要獲得伺服器的證書(公鑰) HTTPS連線使用證書來驗證瀏覽器和Web伺服器之間的連線。當通過HTTPS連線時,伺服

VS2015一鍵解除安裝所有元件工具,徹底解除安裝乾淨。

轉載於  遊戲鳥Ray    http://blog.csdn.net/a359877454 https://blog.csdn.net/a359877454/article/details/52679041 宣告這外掛不是我寫的,是國外的一位同行寫的,偶然在網上發現感

Unity一鍵複製貼上物件的所有元件和引數

Unity開發中,你如果想要把某個物件的元件全部都拷貝到新的物件上,除了一個個複製貼上元件,還要修改元件中的引數,也就是不斷重複Copy Component 、Paste Component As New、Paste Component Values,實在是一件很麻煩的事,所

React16 元件化+測試+全流程 實戰線上賬本專案

第1章 課程介紹 介紹了整個課程的背景知識,專案簡介,學習流程,可以掌握的知識點,以及學習方法和前置知識 1-1 課程導讀 第2章 設計稿:從藍圖開始 從原型圖出發,分析整個應用的需求和功能點,最後規定了檔案結構和程式碼規範。 2-1 從分析設計稿開始 2-2 檔案程式碼結構 第3章 首頁:

H5端密碼控制元件自動化測試

最近在做H5端UI自動化測試,其中遇到了一個棘手問題就是密碼控制元件,因為密碼控制元件的按鈕每次都是隨機不一樣的,沒法固定去點選輸入密碼。密碼的輸入框是div不是input,所以沒法用send_keys()這個方法。輸入的密碼都是經過加密後傳給後臺的,所以沒法直接傳值。各種途徑都被堵死,寶寶心裡苦啊。想來想去