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();????????????????????????
????}
}
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();????????????????????????
????}
}