內蒙古java團隊

          j2se,j2ee開發組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java swing 組件大全(新手快進)

          Posted on 2006-10-27 20:01 帥子 閱讀(8032) 評論(1)  編輯  收藏 所屬分類: j2se技術專區
          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);
          ????????????//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();????????????????????????
          ????}
          }



          評論

          # re: java swing 組件大全(新手快進)  回復  更多評論   

          2007-01-05 16:46 by 組件大
          java swing 組件大全
          http://www.rcomponent.com
          主站蜘蛛池模板: 犍为县| 贵德县| 平乐县| 澄江县| 古浪县| 阿拉善右旗| 广灵县| 灌云县| 繁峙县| 蛟河市| 墨玉县| 古交市| 灵台县| 普宁市| 镇江市| 朝阳市| 马关县| 凤台县| 屯留县| 达州市| 南康市| 紫阳县| 阳谷县| 塘沽区| 龙海市| 区。| 繁昌县| 从江县| 仲巴县| 双城市| 广丰县| 合川市| 澄江县| 仁布县| 元朗区| 岳普湖县| 宁海县| 枣阳市| 永吉县| 丰宁| 宝鸡市|