Java窗体的简单实现

一、窗体

窗体实现用到两个包:javax.swing和java.awt

先创建类JFrame的一个对象,运用JFrame的方法,设置窗体像素大小,标题,在电脑界面的位置

javax.swing.JFrame jf = new javax.swing.JFrame();
//像素 > 分辨率
jf.setSize(450,550);
jf.setTitle("登录界面");
//居中显示
jf.setLocationRelativeTo(null);

 窗体关闭后不会直接停止作用,它会在后台继续作用,要想关闭它就要在编程软件里强制关闭,     因此就要使用关闭窗体后就停止作用的方法来退出进程

jf.setDefaultCloseOperation(3);

 给窗体添加布局管理器,否则在窗体上添加组件时,该组件会占满整个窗体。

//流式布局管理器
java.awt.FlowLayout flow = new java.awt.FlowLayout();
jf.setLayout(flow);

 在最后要设置可见,所有组件放在可见之前添加

  jf.setVisible(true);   //这个方法必不可少

 二、窗体组件

将组件加入窗体的方法

jf.add();

 (一)图片

先创建ImageIcon的对象,传入图片地址;接着创建标签,JLabel的对象,将ImageIcon的对象传入,就完成图片组件;

设置该图片组件的大小:用Dimension类创造对象,然后对图片组件调用setPerferrrdSize()方法传入Dimension对象。

除了JFrame,其它组件设置大小都是用该方法

javax.swing.ImageIcon image = new javax.swing.ImageIcon("1.jpg");
//标签
javax.swing.JLabel jla = new javax.swing.JLabel(image);
//组件设置大小的方法
java.awt.Dimension dm = new java.awt.Dimension(450,300);
jla.setPreferredSize(dm);
jf.add(jla);

(二)用户提示和输入框

 用户提示就是上面图片组件中创建的标签,JLabel.

先创建JLabel对象,并传入提示 的内容,就完成用户提示组件的创建

创建JTextField对象,其大小设置和以上图片组件的大小设置相同

获取输入框上的内容:getText();

javax.swing.JLabel user = new javax.swing.JLabel("账号");
jf.add(user);
javax.swing.JTextField jtf = new javax.swing.JTextField();
java.awt.Dimension dm = new java.awt.Dimension(400,30);
jtf.setPreferredSize(dm);
jf.add(jtf);

(三)按钮

按钮组件是创建JButton对象,传入对象为按钮上的内容

javax.swing.JButton jbu = new javax.swing.JButton("登录");
jf.add(jbu);

按钮组件有一个常用方法为getActionCommand();

其作用是获取按钮上的内容

按钮起作用需添加监视器

(四)滑块

滑块起作用需添加监视器

常用的构造方法:

JSlider()	                        //创建一个范围在 0~100 且初始值为 50 的水平滑块
JSlider(int min,int max)	        //使用指定的最小值和最大值来创建一个水平滑块,初始值为平均值
JSlider(int min,int max,int value)	//用指定的最小值、最大值和初始值创建一个水平滑块

 常用方法:

getMaj orTickSpacing()	             //返回主刻度标记的间隔
getMinorTickSpacing()	             //返回次刻度标记的间隔
getValue()	                         //返回滑块的当前值
setLabelTable(Dictionary labels)	 //用于指定将在给定值处绘制哪个标签
setMaj orTickSpacing(int n) 	     //此方法设置主刻度标记的间隔
setMinorTickSpacing(int n)	         //设置次刻度标记的间隔
setMaximum(int maximum)	             //将滑块的最大值设置为 maximum
setMinimum(int minimum)	             //将滑块的最小值设置为 minimum
setPaintLabels(boolean b)	         //确定是否在滑块上绘制标签
setPaintTicks(boolean b)	         //确定是否在滑块上绘制刻度标记
setPaintTrack(boolean b)	         //确定是否在滑块上绘制滑道
setValue(int n)	                     //将滑块的当前值设置为 n

以下代码为创建如图所示的滑块 

 

JSlider js = new JSlider(0,255,125);
js.setMajorTickSpacing(50);
js.setMinorTickSpacing(25);
js.setPaintLabels(true);   
js.setPaintTicks(true);
jf.add(js);

 三、登录窗体例子

public class Login {
	public void showUI() {
		javax.swing.JFrame jf = new javax.swing.JFrame();
		jf.setSize(450, 550);
		jf.setTitle("登录界面");
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(3);
		java.awt.FlowLayout flow = new java.awt.FlowLayout();
		jf.setLayout(flow);
		
		javax.swing.ImageIcon image = new javax.swing.ImageIcon("C:\\Users\\asus\\Pictures\\Saved Pictures\\1.jpg");
		javax.swing.JLabel jla = new javax.swing.JLabel(image);
		java.awt.Dimension dm1 = new java.awt.Dimension(450,300);
		jla.setPreferredSize(dm1);
		jf.add(jla);
		
		javax.swing.JLabel user1 = new javax.swing.JLabel("账号");
		jf.add(user1);
		javax.swing.JTextField jtf1 = new javax.swing.JTextField();
		java.awt.Dimension dm2 = new java.awt.Dimension(400,30);
		jtf1.setPreferredSize(dm2);
		jf.add(jtf1);
		
		javax.swing.JLabel user2 = new javax.swing.JLabel("密码");
		jf.add(user2);
		javax.swing.JTextField jtf2 = new javax.swing.JTextField();
		jtf2.setPreferredSize(dm2);
		jf.add(jtf2);
		
		javax.swing.JButton jbu1 = new javax.swing.JButton("登录");
		jf.add(jbu1);
		javax.swing.JButton jbu2 = new javax.swing.JButton("注册");
		jf.add(jbu2);
		javax.swing.JButton jbu3 = new javax.swing.JButton("找回密码");
		jf.add(jbu3);
		
		jf.setVisible(true);
		//监视器
		ButtonListener listener1 = new ButtonListener();
		jbu1.addActionListener(listener1);
		listener1.setUserText1(jtf1);
		listener1.setUserText2(jtf2);
		
		jbu2.addActionListener(listener1);
		listener1.setUserText1(jtf1);
		listener1.setUserText2(jtf2);
	}
    public void showNext() {
		javax.swing.JFrame jf = new javax.swing.JFrame();
		jf.setSize(450, 550);
		jf.setTitle("登录界面");
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(3);
		java.awt.FlowLayout flow = new java.awt.FlowLayout();
		jf.setLayout(flow);
		
		javax.swing.JLabel user1 = new javax.swing.JLabel("登录成功");
		jf.add(user1);
		jf.setVisible(true);
	}
public static void main(String[] args) {
		Login lo = new Login();
		lo.showUI();
	}
}

//监视器是接口,需要类来实现
public class ButtonListener implements ActionListener{
	private static String user = "123";
	private static String pass = "123";

	
	private JTextField userText1;
	private JTextField userText2;
	
	public void setUserText1(JTextField jtf) {
		userText1 = jtf;
	}
	public void setUserText2(JTextField jtf) {
		userText2 = jtf;
	}
	Login lo = new Login();
	public void actionPerformed(ActionEvent e) {
		//获取按钮上的内容
		String name = e.getActionCommand();
		String userName1 = userText1.getText();
		String userName2 = userText2.getText();
		
		if(name.equals("登录")) {
			if(user.equals(userName1)&&pass.equals(userName2)) {
				System.out.println("yes");
				lo.showNext();
            }
		}
	}
}

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值