学习日志——2019/07/12

博客围绕Java语言基础中的GUI展开,介绍了GUI按功能分为容器类、辅助类和组件类,还提及框架、布局管理器(流水布局、网格布局、边界布局)、面板、组件等内容,以及复选框和单选按钮等相关构造方法。

java 语言基础

GUI

按功能分:
容器类、辅助类和组件类
eg:

import javax.swing.*;
import java.awt.*;
public class e1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame frame=new JFrame();
		frame.setSize(300,300);
		frame.setTitle("框架");
		frame.setLocation(100,100);
		JButton button=new JButton("按钮");		//创建按钮
		Container container=frame.getContentPane();
		container.add(button);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}

}

运行结果:
在这里插入图片描述
添加按钮的框架

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class e2 {

	public static void main(String[] args) {
		JFrame frame=new JFrame();
		frame.setSize(300,300);
		frame.setLocation(100,100);
		frame.setTitle("框架");
		JButton button1=new JButton("按钮1");
		JButton button2=new JButton("按钮2");
		Container container=frame.getContentPane();
		container .setLayout (new FlowLayout());			//引入布局管理器类
		container.add(button1);
		container.add(button2);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);

	}

}

运行结果:
在这里插入图片描述

  • 框架
import javax.swing.JButton;
import javax.swing.JFrame;

//通过继承生成框架
public class e3 {

	public static void main(String[] args) {
		MyFrame frame=new MyFrame();	

	}

}
class MyFrame extends JFrame{
	MyFrame(){
		this.setSize(200,200);
		this.getContentPane().add(new JButton("按钮"));
		this.setTitle("我自己的框架");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}
}

在这里插入图片描述

  • 布局管理器
  • 流水布局
    构造方法:
FlowLayout(对齐方式,水平间距,垂直间距)

eg:

package MyGUI;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class liushiu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame frame =new MyFrame();
		
	}

}
class MyFrame extends JFrame{
	JButton[] b=new JButton[10];
	MyFrame() {
		this.setSize(300,200);
		Container container=this.getContentPane();
		FlowLayout f=new FlowLayout(FlowLayout.CENTER,10,10);	//定义流水布局管理器
		container.setLayout(f);
		for(int i=0;i<b.length;i++) {
			b[i]=new JButton("按钮"+i);
			container.add(b[i]);
		}
		this.setTitle("流水局管理器");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}

运行结果:
在这里插入图片描述

  • 网格布局
    构造方法:
GridLayout(行数,列数,水平间距,垂直间距);
import javax.swing.*;
import java.awt.*;
public class e4 {
	public static void main(String[] args) {
		MyFrameGrid frame =new MyFrameGrid();
		
	}

}
class MyFrameGrid extends JFrame{
	JButton []b=new JButton[10];
	MyFrameGrid() {
		this.setSize(400,200);
		Container container=this.getContentPane();
		GridLayout g=new GridLayout(3,4,10,10);
		container.setLayout(g);
		for(int i=0;i<b.length;i++) {
			b[i]=new JButton("按钮"+i);
			container.add(b[i]);
			
		}
		this.setTitle("网格布局管理器");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
} 

运行结果:
在这里插入图片描述

  • 边界布局
    构造方法:
 import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;

public class e5 extends JFrame{
	public static void main(String[] args) {
		MyFrameBoder frame=new MyFrameBoder();
		
	}

}
class MyFrameBoder extends JFrame{
	MyFrameBoder(){
		this.setSize(300,200);
		Container container=this.getContentPane();
		BorderLayout b=new BorderLayout(10,10);
		container.setLayout(b);
		container.add(new JButton("东面"),BorderLayout.EAST);
		container.add(new JButton("南面"),BorderLayout.SOUTH);
		container.add(new JButton("西面"),BorderLayout.WEST);
		container.add(new JButton("北面"),BorderLayout.NORTH);
		container.add(new JButton("中间"),BorderLayout.CENTER);
		this.setTitle("边界布局管理器");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}
}

在这里插入图片描述
不添加北面和西面的组件

  • 面板
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class e6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFramePanel frame=new MyFramePanel();
	}

}
class MyFramePanel extends JFrame{
	JButton b1=new JButton("登入(L)");
	JButton b2=new JButton("取消(C)");
	JTextField t1=new JTextField(15);
	JTextField t2=new JTextField(15);
	JLabel l1=new JLabel("用户账户(A)");
	JLabel l2=new JLabel("登入密码(P)");
	JPanel p1=new JPanel();			//创建面板
	JPanel p2=new JPanel();
	JPanel p3=new JPanel();
	JPanel p4=new JPanel();
	MyFramePanel(){
		this.setSize(300,200);
		Container container=this.getContentPane();
		FlowLayout fleft=new FlowLayout(FlowLayout.CENTER,10,10);
		FlowLayout fright=new FlowLayout(FlowLayout.RIGHT,10,10);
		BorderLayout border=new BorderLayout(10,10);
		GridLayout g=new GridLayout(2,1);
		container.setLayout(border);
		p1.setLayout(fleft);
		p2.setLayout(fleft);
		p3.setLayout(fleft);
		p4.setLayout(g);
		p1.add(l1);
		p1.add(t1);
		p2.add(l2);
		p2.add(t2);
		p3.add(b1);
		p3.add(b2);
		p4.add(p1);
		p4.add(p2);
		container.add(p4,BorderLayout.CENTER);//把面板添加到内容窗格中
		container.add(p3,BorderLayout.SOUTH);
		this.setTitle("面板的应用");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		
	}		
}

在这里插入图片描述

  • 组件
//组件
package eg1;

import java.awt.Container;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class zujian {
	public static void main(String[] args) {
		MyFrame frame =new MyFrame();
		
	}
}
class MyFrame extends JFrame{
	JButton b1;
	JButton b2;
	MyFrame(){
		this.setSize(400,100);
		Container container=this.getContentPane();
		FlowLayout f=new FlowLayout(FlowLayout.CENTER,10,10);
		container.setLayout(f);
		ImageIcon icon=new ImageIcon("icon\\icon.jpg");		//定义图片对象
		b1=new JButton("添加图片的按钮",icon);
		b2=new JButton("未添加图片的按钮",icon);
		container.add(b1);
		container.add(b2);
		this.setTitle("按钮的应用");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}
 

在这里插入图片描述
总结:
构造方法:

JLabel jl=new JLabel();
JLabel jl=new JLabel(图片对象);
JLabel jl=new JLabel(图片对象,对齐方式);
JLabel jl=new JLabel(标题);
JLabel il=new JLabel(标题,图片,对齐方式);
JTextField jf=new JTextField();
JTextField jf=new JTextField(列数);
JTextField jf=new JTextField(文本);
JTextField jf=new JTextField(文本,列数);

  • 复选框和单选按钮
//单选按钮和复选框
package eg2;

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.Border;

public class dxfx {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyFrame frame=new MyFrame();
	}

}
class MyFrame extends JFrame{
	JRadioButton r1=new JRadioButton("男",false);	//创建单选按钮
	JRadioButton r2=new JRadioButton("女",true);
	ButtonGroup bg=new ButtonGroup();				//创建按钮组
	//创建复选框
	JCheckBox c1=new JCheckBox("运动");
	JCheckBox c2=new JCheckBox("看书");
	JCheckBox c3=new JCheckBox("旅游");
	Border e=BorderFactory.createEmptyBorder();
	Border bo1=BorderFactory.createTitledBorder(e,"性别");
	Border bo2=BorderFactory.createTitledBorder("兴趣爱好");
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	
	
	public MyFrame(){
		this.setSize(300,200);
		this.setTitle("单选按钮和复选框");
		Container c=this.getContentPane();
		//创建布局管理器对象
		GridLayout f=new GridLayout(2,10,10,10);
		//设置内容窗格布局管理器
		c.setLayout(f);
		bg.add(r1);
		bg.add(r2);
		p1.setBorder(bo1);
		p1.add(r1);
		p1.add(r2);
		
		p2.setBorder(bo2);
		p2.add(c1);
		p2.add(c2);
		p2.add(c3);
		c.add(p1);
		c.add(p2);
		
		this.setVisible(true);
		this.setDefaultCloseOperation(3);
	}
}

在这里插入图片描述
总结:

复选框的构造方法:
JCheckBox c=new JCheckBox();:创建一个没有文本的复选框
JCheckBox c=new JCheckBox(文本);:创建一个有文本的复选框
JCheckBox c=new JCheckBox(文本,是否选中);:创建一个有文本且确定起始选中状态的复选框
JCheckBox c=new JCheckBox(图片对象);:创建一个有图标的复选框
JCheckBox c=new JCheckBox(文本,图片对象);:创建一个有图标和文本且确定起始选中状态的复选框
JCheckBox c=new JCheckBox(文本,图片对象,是否选中);:创建一个有文本和图标且确定起始选中状态的复选框
	单选按钮也很简单,但是注意如果要实现单选功能,就一定要将单选按钮编在一个组内,这样才能实现单选功能,否则它和复选框就一样了。
JRadioButton r=JRadioButton(文本);:创建一个有文本的单选按钮
JRadioButton r=JRadioButton(文本,是否选中);:创建一个有文本且确定起始选中状态的单选按钮
JRadioButton r=JRadioButton(图片对象);:创建一个有图标的单选按钮
JRadioButton r=JRadioButton(图片对象,是否选中);:创建一个有图标且确定起始状态的单选按钮
将单选按钮加在一个组里的方法和语句:
ButtonGroup bg=new ButtonGroup();
bg.add(r);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值