博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java编程接口(5) ------ button和button组
阅读量:7239 次
发布时间:2019-06-29

本文共 3601 字,大约阅读时间需要 12 分钟。

 这篇文章是由自己的学习笔记,欢迎转载,但请注明出处:

  了解了布局管理器和Swing事件模型,那么剩下的就是Swing 的各个组件了。以下就開始逐个学习Swing的各个组件的使用方法及功能。本节先来看最经常使用的button和button组。

1. button

   Swing提供了很多类型的button,有普通的button,复选框,单选等button,甚至菜单项,全部的这些button都是从AbstractButton继承而来。

例如以下图的继承关系:

能够看出,JButton,JMenuItem,JToggleButton都是AbstractButton的子类,我们再继续往下看它们的子类:

  这里就列出了全部的button,以下就演示各个button的使用方法,这里不再实现监听器。能够依据须要自己加入。

public class Buttons extends JFrame {	private JButton jb = new JButton("button");		private BasicArrowButton 			up = new BasicArrowButton(BasicArrowButton.NORTH),			down = new BasicArrowButton(BasicArrowButton.SOUTH),			right = new BasicArrowButton(BasicArrowButton.EAST),			center = new BasicArrowButton(BasicArrowButton.CENTER),			left = new BasicArrowButton(BasicArrowButton.WEST);		public Buttons() {		// TODO Auto-generated constructor stub		setVisible(true);		setSize(500,300);		setLayout(new FlowLayout());		add(jb);		add(new JToggleButton("JToggleButton"));		add(new JCheckBox("JCheckBox"));		add(new JRadioButton("JRadioButton"));				JPanel jp = new JPanel();		jp.setBorder(new TitledBorder("BasicArrowButton"));		jp.add(up);		jp.add(down);		jp.add(left);		jp.add(right);		jp.add(center);		add(jp);				JPanel jp1 = new JPanel();		jp1.setBorder(new TitledBorder("JCheckBoxMenuItem"));		jp1.add(new JCheckBoxMenuItem("JCheckBoxMenuItem1"));		jp1.add(new JCheckBoxMenuItem("JCheckBoxMenuItem2"));		add(jp1);						JPanel jp2 = new JPanel();		jp2.setBorder(new TitledBorder("JRadioButtonMenuItem"));		jp2.add(new JRadioButtonMenuItem("JRadioButtonMenuItem1"));		jp2.add(new JRadioButtonMenuItem("JRadioButtonMenuItem2"));		add(jp2);				JPanel jp3 = new JPanel();		jp3.setBorder(new TitledBorder("JMenu"));		jp3.add(new  JMenu("JMenu1"));		jp3.add(new  JMenu("JMenu2"));		add(jp3);			}		/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		new Buttons();	}}
  执行。例如以下图效果:

  这里不过将这些button显示在窗口上。并没有给各个组件加入事件监听器。

2.button组

  要想让单选button表现出某种"排他"行为,必须把它们增加到一个"button组(ButtonGroup)"中,事实上,不论什么AbstarctButton对象都能够增加到button组中。

        为了避免反复的代码,以下的样例使用反射功能来产生几组不同的类型的button。

public class ButtonGroups extends JFrame {	private static String[] ids = {		"Mon",		"Tue",		"Wed",		"Thu",		"Fri",		"Sat",		"Sun"	};	private JPanel makePanel(Class

extends AbstractButton> kind,String[] ids){ ButtonGroup bg = new ButtonGroup(); JPanel jp = new JPanel(); String title = kind.getName(); title = title.substring(title.lastIndexOf('.')+1); jp.setBorder(new TitledBorder(title)); for(String id : ids){ AbstractButton ab = new JButton("failed"); try { Constructor ctor = kind.getConstructor(String.class); ab = (AbstractButton)ctor.newInstance(id); } catch (Exception e) { System.out.println("cat't create "+kind); } bg.add(ab); jp.add(ab); } return jp; } public ButtonGroups() { // TODO Auto-generated constructor stub setLayout(new FlowLayout()); setSize(500,300); setVisible(true); add(makePanel(JButton.class, ids)); add(makePanel(JToggleButton.class,ids)); add(makePanel(JCheckBox.class,ids)); add(makePanel(JRadioButton.class,ids)); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new ButtonGroups(); } }

        当中。makePanel()方法,是用来创建一个button组和一个JPanel,此方法的第二个參数是一个字符串数据,针对当中每一个字符串,将创建一个由第一个參数所代表的button实例,然后将此button增加到JPanel中。

         执行程序,效果例如以下:

       边框的标题是从类的名称中得到的,而且去掉了当中的前缀。直接取出类名。getConstructor()方法产生一个Constructor对象,这个构造器接受“传递给getConstructor()”的Class列表里面指定的类型“所组成的数组作为码数,然后,仅仅须要调用newInstance(),而且把包括实际參数列表传递给它,在本实例中即ids数据的字符串。

       要想通过button得到“排他”行为。就得先创建一个button组,然后把你希望具有的“排他”行为的button增加到这个button组中。执行程序。能够发现除了JButton以外,其它button都具有这样的“排他”的行为。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
学习ssh之ssh密钥随身携带
查看>>
HBA详解(原创)
查看>>
java集合框架02——Collection架构与源码分析
查看>>
怎样检查svn启动没有
查看>>
理解Nodejs的Event Loop
查看>>
Html Table 合并单元格
查看>>
第七章_标签文件
查看>>
阿里巴巴CTO张建锋:大数据+计算+算法才是未来
查看>>
hibernate中一级缓存和二级缓存
查看>>
【转载】架构师的行为准则(一)
查看>>
RMI,RPC,SOAP对比分析
查看>>
json解析,异步下载(listview仅滑动时加载)Demo总结
查看>>
浅谈12306核心模型设计思路和架构设计
查看>>
基于Solr的空间搜索
查看>>
给vmware的Linux虚拟机添加硬盘
查看>>
XMOVE3.0手持终端——软件介绍(三):在2KB内存的单片机上实现的的俄罗斯方块 (原创)...
查看>>
Kafka实战-Storm Cluster
查看>>
Spring中bean的范围
查看>>
JavaScript实现自适应窗口大小的网页
查看>>
跟我一起数据挖掘(5)——数据类型
查看>>