Java GUI常用控件

javax.swing包中的常用组件:

—容器组件

JFrame(框架)

JDialog(多窗体程序以及窗体间传递数据)

JPanel(面板)

JScrollPane(滚动面板)

—文本组件

JLabel、JTextField、JPasswordField、JTextArea

—表单组件

JButton

JCheckBox

JRadioButton和ButtonGroup

JComboBox


javax.swing.JDialog

1.JDialog用于在程序中创建对话框组件,对于多窗口的程序而言,对话框尤为重要

2.对话框其实就是轻量级的窗体,它比JFrame消耗更少的系统资源。

3.它与JFrame的区别在于,JFrame可以在程序中不依赖于其他窗体单独存在,而JDialog则必须依赖于其他窗体,一般是做辅助窗口呈现。

4.更重要的是,JDialog支持模式显示

5.所谓模式显示,是指窗口以不丢失焦点的独占方式显示。

JDialog常用的构造函数:

//创建一个没有标题并且没有指定所有者的无模式对话框
JDialog()
//创建一个没有标题但指定owner作为其所有者的无模式对话框
JDialog(Frame owner)
//创建一个没有标题但有指定所有者的对话框,根据参数modal来决定他是否模式显示
JDialog(Frame owner, boolean modal)
//创建一个具有指定标题和指定所有者的无模式对话框
JDialog(Frame owner, String title)
//创建一个指定标题和指定所有者的对话框,参数modal决定是否模式显示
JDialog(Frame owner, String title, boolean modal)
//创建一个没有标题但有指定所有者的对话框,根据参数modal来决定它是否模式显示
JDialog(Dialog owner, boolean modal)

除了模式显示的功能外,JDialog的使用跟JFrame很相似,以下是一些常用的方法:

//设置对话框标题,标题内容由参数title指定
void setTitle(String title)
//设置对话框的大小,由参数width指定宽度,参数height指定高度
void setSize(int width, int height)
//设置对话框能否调整大小,由参数resizable决定
void setResizable(boolean resizable)
//设置对话框是否可见
void setVisible(boolean b)
//获得对话框的内容面板
Container getContentPane()
//释放当前对话框及其所有子组件所占用的资源,即卸载对话框
void dispose()

下面通过一个案例来深入体会JDialog,先来看看效果图:


上图表示用户点击"显示子窗口"出现一个对话框,然后用户在对话框中输入名字,点击"确定"之后,对话框会关闭,名字就会显示在主窗口中。

程序源码:

/**
 * 测试JDialog
 * @author Liao
 *
 */
public class JDialogTest extends JFrame{

	
	private static final long serialVersionUID = 1L;
	//定义标签
	public JLabel jLabel;
	//定义显示子窗口的按钮
	private JButton showSubWindow;
	
	//在构造函数中初始化组件
	public JDialogTest(){
		//创建标签
		jLabel = new JLabel("请输入您的名字");
		//创建按钮
		showSubWindow = new JButton("显示子窗口");
		//设置布局为BorderLayout,可以不设置,因为窗体默认是BorderLayout
		this.setLayout(new BorderLayout());
		//把组件添加到窗体中
		this.add(jLabel, BorderLayout.NORTH);
		this.add(showSubWindow, BorderLayout.SOUTH);
		
		//设置按钮的监听事件
		showSubWindow.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				//我们在另外一个类中显示子窗口,只要把主类中的上下文参数传过去即可
				new SubWindow(JDialogTest.this);
				
			}
		});
		
		
		//设置窗体的基本属性
		this.setSize(500, 500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		
	}


	public static void main(String[] args) {
		
		new JDialogTest();
	}
}

子窗口程序:

public class SubWindow extends JDialog{
	
	
	private static final long serialVersionUID = 1L;
	//定义文本输入框
	private JTextField jTextField;
	//定义确定按钮
	private JButton jbt;
	
	//无参构造函数
	public SubWindow() {
		
	}

	//在构造函数中初始化组件
	public SubWindow(final JDialogTest context) {
		//创建文本输入框
		jTextField = new JTextField();
		//创建按钮
		jbt = new JButton("确定");
		
		//设置布局管理器,可以不写,因为JDialog和窗体差不多,默认都是BorderLayout
		this.setLayout(new BorderLayout());
		//把组件添加到JDialog中
		this.add(jTextField, BorderLayout.NORTH);
		this.add(jbt, BorderLayout.SOUTH);
		
		//设置按钮的监听事件
		jbt.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				//获取用户输入
				String name = jTextField.getText();
				//把名字写到主窗体的标签中
				context.jLabel.setText("您的名字是:" + name);
				//关闭子窗口
				SubWindow.this.setVisible(false);
				//setVisible(false);
				
			}
		});
		
		//设置JDialog的基本属性
		this.setSize(300, 200);
		this.setTitle("输入");
		this.setResizable(false);
		this.setVisible(true);
	}


}
注:上述程序的思想很好,就好比我们在写android程序时那样,把当前类的上下文参数传到另外一个界面中。




  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值