java swing最简单实例(2) 往JFrame里面放一个容器或组件

可以往JFrame里面放的东西有两种,Containers和Components.在jigloo的图形化界面上可以清楚的看到这些

常用的Containers(容器)有这些:
JFrame带标题和关闭按钮的界面
JPanel面板
JScrollPane带滚动条的面板
JSplitPane带分栏的面板
JTabbedPane标签页结构的面板
JDialog对话框

常用的Components(组件)有这些
JButton按钮
JLabel标签(用于显示固定不变的文字
JTextField文本框(用于让用户写入文字)
JRadioButton单选框
JCkeckBox选择框
JComboBox下拉框
JTable表格

添加一个普通的容器或者组件的方法是相同的,都是两个步骤,创建出来,然后加进去。我们在实例(1)的基础上进行这两个操作,给一个空的JFrame加上一个组件

package basicCompoment;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class AddComponent extends JFrame{
	public AddComponent(){
		initGUI();
	}
	private void initGUI(){
		setVisible(true);
		setSize(300,400);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		
		//创建元件
		JButton jButton1 = new JButton("jButton1");
		//添加元件
		add(jButton1);
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AddComponent f = new AddComponent();
			}				
		});
	}
}

这里没有进行布局,只是将组件加进去,所以会显示覆盖整个Frame的一个按钮。

一般来说,可以将对象设为私有成员,在需要定义时创建,在需要加入时加入,可以更方便的在不同函数中对元件进行操作。特别需要注意的是所有的对象必须先初始化才能加入,并且每个对象只能放置在一个地方。即使是两个表现形式完全相同的对象,也必须new两个出来,试图将一个按钮放在两个地方这样的事情是行不通的。

将组件设为私有成员的方式

package basicCompoment;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class AddComponent2 extends JFrame{
	//定义变量
	private JButton jButton1;
	public AddComponent2(){
		initGUI();
		addComp();
	}
	private void addComp(){
		//初始化
		jButton1 = new JButton("jButton1");
		//添加元件
		add(jButton1);
	}
	private void initGUI(){
		setVisible(true);
		setSize(300,400);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				AddComponent2 f = new AddComponent2();
			}				
		});
	}
}


 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。