界面编程-3

 

  
  
  
  
  1.   
  2. 按钮控件  
  3. 1. JButton  
  4. 它可以带图标  
  5. 示例:  
  6. JButton btn=new JButton("print",new ImageIcon("7.icon"));  
  7. btn.setToolTipText("打印");   //提示文字  
  8. 也可以设置文字和图标的放置方法:  
  9. btn.setHorizontalTextPosition(SwingConstants.CENTER)  水平方向,文字居中  
  10. btn.setVerticalTextPosition(SwingConstants.BOTTOM )  垂直方向  文字在下面  
  11. 2. JCheckBox   
  12. 复选框  
  13. 3. JRadioButton  
  14. 单选按钮  一般当创建对个单选按钮时,应该再创建应该ButtonGroup对象,利用这个对象将多个单选按钮归为一组  
  15. 示例:  
  16. ButtonGroup group=new ButtonGroup();  
  17. JRadioButton ec=new JRadioButton("ec");  
  18. JRadioButton ac=new JRadioButton("ac");  
  19. group.add(ec);  
  20. group.add(ac);  
  21. panel.add(ec);  
  22. panel.add(ac);  
  23. 4. JToggleButton  
  24. 是一种具有两种状态的按钮  
  25. 示例:  
  26. JToggleButton bt1=new JToggleButton("on/off");  
  27. JToggleButton bt2=new JToggleButton("running",new ImageIcon("7.icon"),true);  
  28. panel.add(bt1);  
  29. panel.add(bt2);  
  30.   
  31. 示例:  
  32. import java.awt.*;  
  33. import javax.swing.*;  
  34. import java.awt.event.*;  
  35. public class jjtt extends JFrame implements ActionListener{  
  36.     private JTextArea textArea;  
  37.     JToolBar toolBar;  
  38.     JButton button[]=new JButton[4];  
  39.       
  40.     public jjtt(){  
  41.         setSize(345,200);  
  42.           
  43.         toolBar=new JToolBar("工具栏",JToolBar.HORIZONTAL);  
  44.         createToolBarButton();  
  45.           
  46.         Panel panel=new Panel();  
  47.         textArea=new JTextArea(2,26);  
  48.         JScrollPane scrollPane=new JScrollPane(textArea);  
  49.         panel.add(scrollPane);  
  50.         createOtherButton(panel);  
  51.           
  52.         JPanel contentPanel=new JPanel();  
  53.         contentPanel.setLayout(new BorderLayout());  
  54.         contentPanel.add(toolBar,BorderLayout.NORTH);  
  55.         contentPanel.add(panel,BorderLayout.CENTER);  
  56.         add(contentPanel);  
  57.           
  58.     }  
  59.     public void createOtherButton(Panel panel){  
  60.         JCheckBox cb1=new JCheckBox("计算机");  
  61.         JCheckBox cb3=new JCheckBox("电影",true);  
  62.         panel.add(cb1);  
  63.         panel.add(cb3);  
  64.         ButtonGroup group=new ButtonGroup();  
  65.         JRadioButton ec=new JRadioButton("电子商务");  
  66.         JRadioButton mis=new JRadioButton("管理信息系统",true);  
  67.         group.add(ec);group.add(mis);  
  68.         panel.add(ec);panel.add(mis);  
  69.         JToggleButton tb1=new JToggleButton("开关",true);  
  70.         JToggleButton tb2=new JToggleButton("正在运行...",new ImageIcon("7.icon"),true);  
  71.         panel.add(tb1);  
  72.         panel.add(tb2);  
  73.     }  
  74.     public void createToolBarButton(){  
  75.         String title[]={"费用","文档","电量","退出"};  
  76.           
  77.         for(int i=0;i<4;i++){  
  78.             button[i]=new JButton(title[i]);  
  79.             button[i].addActionListener(this);  
  80.             toolBar.add(button[i]);  
  81.             toolBar.addSeparator();  
  82.             button[i].setName(title[i]);  
  83.             button[i].setBorder(null);    
  84.         }  
  85.     }  
  86.     public void actionPerformed(ActionEvent e){  
  87.         for(int i=0;i<4;i++)  
  88.             if(e.getSource()==button[i]){  
  89.                 textArea.setText("你单击了【"+button[i].getName()+"】工具栏图标!");  
  90.                 break;  
  91.             }  
  92.     }  
  93.     public static void main(String args[]){  
  94.         new jjtt().setVisible(true);  
  95.     }  
  96. }  
  97.   
  98.   
  99.   
  100.    滚动条JScrollBar 和滑块 JSlider  
  101. 1. JScrollBar  
  102. 其有三个构造方法:  
  103. JScrollBar()   具有应该垂直的滚动条  
  104. JScrollBar(int orientation)  具有特定的方向  可以是  JScrollBar.HORIZONTAL   JScrollBar.VERTICAL  
  105. JScrollBar(int orientation,int value,int extent ,int min,int max)  方向 初始值 跨度 最小  最大  
  106. 示例  :  
  107. JScrollBar scrollBar=new JScrollBar(JScrollBar.HORIZONTAL,50,10,0,100);  
  108. 可以给滚动条添加事件处理:  使用addAdjustmentListener()方法  
  109. scrollBar.addAdjustmentListener(){public void adjustmentValueChanged(AdjustmentEvent e){}}  
  110. 2. JSlider  
  111. 它是用来选择某一个范围内通过移动滑块来选择数值的控件,其构造方法如下:  
  112. JSlider()  创建一个0~100  初始值是50 的水平滑块  
  113. JSlider(int orientation)   有方向  可以是  JSlider.HORIZONTAL  JSlider.VERTICAL  
  114. JSlider(int min,int max)  
  115. JSlider(int min,int max,int value)  
  116. JSlider(int orientation,int min,int max,int value)  
  117. 示例:  
  118. JSlider slider1=new JSlider(JSlider.HORIZONTAL,0,100,0);  
  119. 如果希望拖动滑块的时候做出相应的处理,需要添加addChangeListener()  监听器  
  120. 示例:  
  121. import javax.swing.*;  
  122. import java.awt.*;  
  123. import java.awt.event.*;  
  124. public class jjtt extends JFrame{  
  125.     public jjtt(){  
  126.         JPanel panel=new JPanel();  
  127.         panel.setLayout(null);  
  128.         final JTextField scrollBarValue=new JTextField(10);  
  129.         scrollBarValue.setBounds(310,20,70,20);  
  130.         JScrollBar scrollBar=new JScrollBar(JScrollBar.HORIZONTAL,50,10,0,100);  
  131.         scrollBar.setBounds(10,20,300,20);  
  132.         scrollBarValue.setText("当前值"+scrollBar.getValue());  
  133.         scrollBar.addAdjustmentListener(new AdjustmentListener(){  
  134.             public void adjustmentValueChanged(AdjustmentEvent e){  
  135.                 scrollBarValue.setText("当前值"+e.getValue());  
  136.             }  
  137.         });  
  138.         panel.add(scrollBar);  
  139.         panel.add(scrollBarValue);  
  140.         final JTextField sliderValue=new JTextField(10);  
  141.         sliderValue.setBounds(310,60,70,20);  
  142.         JSlider slider=new JSlider(JSlider.HORIZONTAL,0,100,0);  
  143.         slider.setMajorTickSpacing(10);   //设置主刻度标记间隔  
  144.         slider.setMinorTickSpacing(5);    //设置次可读标记间隔  
  145.         slider.setPaintTicks(true);       //在滑块上绘制可读标记  
  146.         slider.setPaintLabels(true);      //在滑块上绘制标签  
  147.         sliderValue.setText("当前值"+slider.getValue());  
  148.         slider.addChangeListener(new ChangeListener(){  
  149.             public void stateChanged(ChangeEvent e){  
  150.                 sliderValue.setText("当前值"+((JSlider) e.getSource()).getValue());  
  151.             }  
  152.         });  
  153.         slider.setBounds(10,60,300,50);  
  154.         panel.add(slider);  
  155.         panel.add(sliderValue);  
  156.         add(panel);  
  157.     }  
  158.     public static void main(String args[]){  
  159.         new jjtt().setVisible(true);  
  160.     }  
  161. }  
  162.   
  163.   
  164.  JComboBox 和JList控件  
  165.    
  166.    
  167.  JComboBox表示下拉组合框,要定义下拉组合框,可以先定义一个包含列表项的数组  
  168.  String city[]={"","",""};  
  169.  然后可以利用该数组创建JComboBox对象:  
  170.  JComboBox cities=new JComboBox(city);  
  171.  cities.addItem("");         //新增一个列表项  
  172.  实际中我们往往希望在改变组合框的选择时,进行某个处理,这需要添加监听器:  
  173.  cities.addActionListener(new ActionListener(){  
  174.     public void actionPerformed(ActionEvent e){}  
  175.  })  
  176.   
  177. Jlist  
  178. 它运行用户选择一个或多个列表项,它的列表项是一次显示,而JComboBox的是点击下拉箭头时才显示全部,其创建方法为:  
  179. JList cities=new JList(city);  
  180.   
  181. 选项模式  
  182. 此模式说明用户以怎样的方式选择列表框中的项,通过setSelectionMode(int secletionMode) 设定secletionMode可以是  ListSelectionModel.SINGLE_SELECTION一次只能选择一项  
  183. ListSelectionModel.SINGLE_INTERVAL_SELECTION  一次只能选择一个连续间隔列表项   ListSelectionModel.MULTIPLE_INTERVAL_SELECTION  可以选择多个列表项  
  184.   
  185. 布局方向  
  186. 通过setLayoutOrientation(int orientation) 可以设置列表的布局方向,  可以是 JList.VERTICAL  JList.HORIZONTAL_WRAP 水平布局 自动折行  
  187. JList.VERTICAL_WRAP 垂直布局 自动折行  
  188.   
  189. 可见列表行数  
  190. 通过setVisibleRowCount(int visibleRow)  进行设置, 如果设为 -1 则JList在给定的显示区域内尽可能多的显示列表项  
  191.   
  192. 在实际使用JList时 往往将其嵌入滚动面板中:  
  193. 示例:  
  194. JList cities=new JList(city);  
  195. JScrollPane box=new JScrollPane(cities);  
  196.   
  197. 如果希望在选择时进行处理,需要添加监听器 addListSelectionListener()  与JComboBox有区别:  
  198. cities.addListSelectionListener(new ListSelectionListener(){public void valueChanged(ListSelectionEvent e){}})  
  199.   
  200. 示例:  
  201. import javax.swing.*;  
  202. import java.awt.*;  
  203. import java.awt.event.*;  
  204. import javax.swing.event.*;  
  205. public class jjtt extends JPanel  implements ActionListener,ListSelectionListener{  
  206.     private JTextField text1,text2,text3;  
  207.     private JComboBox combo1,combo2;  
  208.       
  209.     public jjtt(LayoutManager layout){  
  210.         super(layout);  
  211.         String city1[]={"湖北武汉","浙江杭州","江苏南京","广州广东","山东济南"};  
  212.         combo1=createcombox(city1);  
  213.         add(combo1);  
  214.           
  215.         text1=new JTextField(10);  
  216.         add(text1);  
  217.         add(createList(city1));  
  218.         text2=new JTextField(10);  
  219.         add(text2);  
  220.         String course[]={"电子商务","战略管理","语言","操作系统","数据库"};  
  221.         combo2=createcombox(course);  
  222.         add(combo2);  
  223.         text3=new JTextField(10);  
  224.         add(text3);  
  225.     }  
  226.     private JComboBox createcombox(String city[]){  
  227.         JComboBox cityComboBox=new JComboBox(city);  
  228.         cityComboBox.setSelectedIndex(1);  
  229.         cityComboBox.addActionListener(this);  
  230.         return cityComboBox;  
  231.     }  
  232.     private JScrollPane createList(String city[]){  
  233.         JList cityList=new JList(city);  
  234.         cityList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);  
  235.         cityList.setLayoutOrientation(JList.HORIZONTAL_WRAP);  
  236.         cityList.setVisibleRowCount(-1);  
  237.         cityList.addListSelectionListener(this);  
  238.         JScrollPane sp=new JScrollPane(cityList);  
  239.         sp.setPreferredSize(new Dimension(150,80));  
  240.         return sp;  
  241.     }  
  242.     public void actionPerformed(ActionEvent e){  
  243.         JComboBox cb=(JComboBox)e.getSource();  
  244.         if(cb==combo1){  
  245.             text1.setText((String) cb.getSelectedItem());  
  246.         }  
  247.         if(cb==combo2){  
  248.             text3.setText((String) cb.getSelectedItem());  
  249.         }  
  250.     }  
  251.     public void valueChanged(ListSelectionEvent e){  
  252.         text2.setText((String)((JList)e.getSource()).getSelectedValue());  
  253.     }  
  254.     public static void main(String argd[]){  
  255.         JFrame frame=new JFrame();  
  256.           
  257.         frame.setSize(300,200);  
  258.         frame.setContentPane(new jjtt(new FlowLayout()));  
  259.         frame.setVisible(true);  
  260.     }  
  261. }  
  262.   
  263.   
  264.   
  265. 菜单控件  
  266. 1.窗口菜单  
  267. swing的菜单是有JMenuBar JMenu JMenuItem 或者JCheckBoxMenuItem  JRadioButtonMenuItem 集成的  
  268. 其允许设置一个菜单图标  
  269. 示例:  
  270. JMenuBar mb=new JMenuBar();  
  271. JMenu baseData=new JMenu("基础数据");  
  272. JMenuItem baseParam=new JMenuItem("基础参数");  
  273. baseData.add(baseParma);  
  274. mb.add(baseData);  
  275. setMenuBar(mb);  
  276.   
  277. 2.弹出式菜单  
  278. JPopupMenu类用来实现弹出式菜单  
  279. 示例:  
  280. JPopupMenu popup=new JPopupMenu();  
  281. JMenuItem exit=new JMenuItem("退出");  
  282. popup.add(exit);  
  283.   
  284. 示例:  
  285. import java.awt.*;  
  286. import java.awt.event.*;  
  287. import javax.swing.*;  
  288. import javax.swing.event.*;  
  289. class jjtt extends JFrame  implements ActionListener{  
  290.     private String COMMAND="exit";  
  291.     public jjtt(){  
  292.         setSize(400,600);  
  293.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  294.         final JPanel panel=new JPanel();  
  295.           
  296.         final JPopupMenu popup=new JPopupMenu();  
  297.         JMenuItem open=new JMenuItem("open");  
  298.         popup.add(open);  
  299.         open.addActionListener(this);  
  300.         open.setActionCommand("open");  
  301.         JMenu save=new JMenu("save");  
  302.         popup.add(save);  
  303.         JMenuItem exit=new JMenuItem("exit");  
  304.         popup.add(exit);  
  305.         exit.setActionCommand(COMMAND);  
  306.         exit.addActionListener(this);  
  307.           
  308.         addMouseListener(new MouseAdapter(){  
  309.             public void mouseReleased(final MouseEvent e){  
  310.                 if(e.isPopupTrigger()){  
  311.                     popup.show(e.getComponent(),e.getX(),e.getY());  
  312.                 }  
  313.             }  
  314.         });  
  315.           
  316.           
  317.     }  
  318.     public void actionPerformed(final ActionEvent e){  
  319.             if(e.getActionCommand().equals("open")){  
  320.                 JFileChooser jfc=new JFileChooser();  
  321.                 jfc.showDialog(this,"chooser");  
  322.             }  
  323.             if(e.getActionCommand().equals(COMMAND)){  
  324.                 System.exit(0);  
  325.             }  
  326.               
  327.         }  
  328.     public static void main(String arge[]){  
  329.         new jjtt().setVisible(true);  
  330.     }  
  331. }  
  332.   
  333.   
  334.    进度条  
  335. JProgressBar   
  336. 有四种方法创建进度条:  
  337. JProgressBar pro=new JProgressBar();  不带进度字符串的水平进度条  
  338. JProgressBar pro=new JProgressBar(SwingConstants.VERTICAL)  垂直  
  339. JProgressBar pro=new JProgressBar(0,100)   最小 最大值水平  
  340. JProgressBar pro=new JProgressBar(SwingConstants.HORIZONCAL,0,100)   最小 最大值水平  
  341. 其提供了一些方法来设置进度条:  
  342. void setIndeterminate(boolean newValue) 设置进度条处于确定还是不确定模式 true 表示不确定 false 表示确定  默认为确定  
  343. void setString(String s)  设置进度条显示的文字信息  
  344. void setStringPainted(boolean b) 进度条是否允许出现文字信息  
  345. void setValue(int n)  将进度条的当前值设置为n  
  346. 确定模式 指我们可以事先精确估计完成任务的进度  
  347. 不确定模式 例如我们从网上下载电影 不确定下载时间 ,对于不确定的状态,我们需要告知任务完成并设置成默认状态 示例:  
  348. pro.setIndeterminate(false); pro.setString("完成");  
  349.   
  350.   
  351. ProgressMonitor  
  352. 其以弹出对话框的形式显示任务进度 其构造方法如下:  
  353. ProgressMonitor(Component parentCom,Object message,String note,int min,int max)  
  354. 其主要方法为:  
  355. void setProgress(int nv)  设置任务的当前进度  
  356. void setNote(String nite)  设置当前进度的提示信息  
  357. boolean isCanceled()   判断用户是否单击了对话框中的按钮  
  358. 一般我们将其用一个单独的线程  
  359. import java.awt.*;  
  360. import java.awt.event.*;  
  361. import javax.swing.*;  
  362. import javax.swing.event.*;  
  363. class jjtt extends JFrame  implements ActionListener{  
  364.     private String COMMAND="exit";  
  365.     public jjtt(){  
  366.         setSize(400,600);  
  367.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  368.         final JPanel panel=new JPanel();  
  369.           
  370.         final JProgressBar jpb=new JProgressBar();  
  371.         jpb.setIndeterminate(true);  
  372.         jpb.setString("going");  
  373.           
  374.         new Thread(new Runnable(){  
  375.             public void run(){  
  376.                 for(int i=0;i<=100;i++){  
  377.                     try{  
  378.                         jpb.setValue(i);  
  379.                         Thread.sleep(100);  
  380.                     }catch(Exception e){}  
  381.                 }  
  382.             }  
  383.         }).start();  
  384.         panel.add(jpb);  
  385.         add(panel);  
  386.     }  
  387.     public void actionPerformed(final ActionEvent e){  
  388.               
  389.         }  
  390.     public static void main(String arge[]){  
  391.         new jjtt().setVisible(true);  
  392.     }  
  393. }  
  394.   
  395.   
  396. SwingWorker  
  397. 让进度条在后台处理时比较合适的。SwingWorker抽象类,以便专用线程执行长时间任务,SwingWorker与JProgressBar JProgressMonitor配合使用  
  398. 我们一般继承,然后  覆盖相关的方法:  
  399. public class sw extends SwingWorker{  
  400.     protected Object doInBackground() throws Exception{}  在后台线程中执行任务,我们可以将需要长时间执行的任务放在该方法内  
  401.     protected void done(){}        任务完成,可以在此方法内提示用户任务完成  
  402. }  
  403. 其比较重要的方法如下:  
  404. boolean cancel(boolean mayInterruootIfRunning)    取消任务的执行  
  405. void execute()  在worker 线程上执行任务  
  406. protected void setProgress(int progress)  设置进度条指示属性  
  407. boolean isCanceled()  任务完成前取消返回true  
  408. boolean isDone()   正常终止 出现异常 或者取消而完成任务返回true  
  409.   
  410.   
  411.   
  412.   
  413. 树JTree  
  414. 其常用的构造方法:  
  415. JTree()  
  416. JTree(Object[] value)  指定数组value的每个元素作为子节点  
  417. JTree(TreeModel newModel)  使用指定的表格模型创建树  
  418. JTree(TreeNode root)    root作为根节点  
  419. JTree(TreeNode root,boolean ask  )        ask表示叶节点是否允许有子节点  
  420. JTree(Vector<?>value)    指定Vector的每个元素作为子节点  
  421.   
  422. TreeNode是一个接口类, 我们可以通过 DefaultMutableTreeNode类 用以表示属性结构中的通用类 其构造方法如下:  
  423. DefaultMutableTreeNode()  允许有子节点  
  424. DefaultMutableTreeNode(Object userObject) 具有指定标签的 节点  
  425. DefaultMutableTreeNode(Object userObject,boolean allowChildNode)   
  426. 示例:  
  427. DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");  
  428. DefaultMutableTreeNode r1=new DefaultMutableTreeNode("r1");  
  429. root.add(r1);  
  430. 我们可以通过DefaultMutableTreeNode来构建树,不过通过树模型TreeModel来创建树会带来方便,TreeModel是一个接口类  但是我们可以实现TreeModel接口的  
  431. DefaultTreeModel类  其构造方法如下:  
  432. DefaultTreeModel(TreeNode root) 创建其中然后节点都 可以有子节点的树,root为数的根节点  
  433. DefaultTreeModel(TreeNode root,boolean allowchild)  是否允许有子节点  
  434. 示例: DefaultTreeModel root=new DefaultTreeModel(root);  

 

你可能感兴趣的:(java,界面)