⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingtest.java

📁 举例说明了swing中的一些对象使用
💻 JAVA
字号:
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 robococde@etang.com */public class SwingTest extends JFrame{    /**     * 主模块,初始化所有子模块,并设置主框架的相关属性     */    public SwingTest()    {        // 初始化所有模块        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)                {                    // 释放资源,退出程序                    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);//JScrollPane是什么组件?           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){}        new SwingTest();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -