Swing组件大全

import java.awt.*;
import java.awt.event.*;

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

/**
 * Swing component test
 */
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();

  // 设置主框架的菜单
  setJMenuBar(menuTest);

  Container c = getContentPane();

     c.setLayout(new BorderLayout());
  c.add(leftPanel, BorderLayout.WEST);
  c.add(rightPanel, BorderLayout.EAST);
  c.add(bottomPanel, BorderLayout.SOUTH);
  c.add(centerPanel, BorderLayout.CENTER);

  // 利用无名内隐类,增加窗口事件
  addWindowListener(new WindowAdapter() {
            public void WindowClosing(WindowEvent e) {
                // 释放资源,退出程序
                dispose();
                System.exit(0);
            }
        });

  setSize(700,500);
  setLocation(200,150);
  setTitle("Swing 组件大全");
  // 隐藏主框架的标题栏
//  setUndecorated(true);

        show();
 }

    public static void main(String args[]) {
  try {
      // Windows GUI
//          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  }
        catch  (Exception e) {
            e.printStackTrace();
        }
  new SwingTest();
 }

 
 /**
  * 菜单栏处理模块
  * JMenuBar --+
  *            --JMenu--+
  *                    --JMenuItem  --ActionListener
  */
 class MenuTest extends JMenuBar {

  private JDialog aboutDialog;
  // 菜单初始化***作
  public MenuTest() {
   JMenu fileMenu = new JMenu("文件");
   JMenuItem aboutMenuItem = new JMenuItem("关于", KeyEvent.VK_A);
   JMenuItem exitMenuItem = new JMenuItem("退出", KeyEvent.VK_E);

   fileMenu.add(aboutMenuItem);
   fileMenu.add(exitMenuItem);
   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;
  }

  public void initAboutDialog() {
   aboutDialog.setTitle("关于");

   Container con =aboutDialog.getContentPane();

   // Swing 中使用html语句
   Icon icon = new ImageIcon("smile.gif");
   JLabel aboutLabel = new JLabel("<html><b><font color=#990000><center>Swing</center></font></b></html>", 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(18);
   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 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--+
  *         --***utton  --JToggleButton -- JList -- JCombox --JCheckBox ....
  */
 class RightPanel extends JPanel {
  public RightPanel() {
   this.setLayout(new GridLayout(8,1));

   // 初始化各种按钮
   JCheckBox checkBox = new JCheckBox("复选按钮");
   ***utton button = new ***utton("打开文件");
   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);
      }
    }
   });

   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.addItem("浙江");
   comboBox.addItem("江西");
   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("编辑器点击命令成功");
    }
   });

   JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,textField,textPane);

   JTable table = new JTable(10,10);

   JPanel pane  = new JPanel();
   pane.add(table.getTableHeader(),BorderLayout.NORTH);
   pane.add(table);

   tab.addTab("文本演示",splitPane);
   tab.addTab("表格演示",pane);
   tab.setPreferredSize(new Dimension(500,600));
   this.add(tab);
   this.setEnabled(true);
  }
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值