图形用户界面

组件的分类

swing拥有统一的风格,不依赖操作系统。可插入轻量级组件等优点;

本图将作为样图来说明各种组件

  1. 窗体:跳出来的方块(JFrame,JDialog等窗口)
  2. 标签(JLabel):图中自带的文字部分
  3. 文本框(Text):只可以输入一行文字
  4. 文本域:可以输入多行文字
  5. 下拉框:

JFrame窗体的创建

JFrame 类就是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。

package test;
import java.awt.Color;
import java.awt.Container;

import javax.swing.*;
class test1 extends JFrame{
	private static final long serialVersionUID = 1L;
	/*JFrame窗体的创建及设置*/
	public test1() {
		//Jframe f=new JFrame("窗体标题");//未进行继承时使用这个
		setTitle("设置标题");//创建窗体对象
		setVisible(true);//设置窗体可见
		/*
		 * EXIT_ON_CLOSE:隐藏窗体;并停止程序
		 * DO_NOTHING_ON_CLOSE:无任何操作
		 * HIDE_ON_CLOSE:隐藏窗体,但不停止程序
		 * DISPOSE_ON_CLOSE:释放窗体资源
		 * */
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭规则
		setSize(200,200);//设置窗体大小,单位为像素
		setLocation(100, 100);//设置窗体位置,单位为像素
		//me.setBounds(x, y, width, height);设置窗体位置,大小
		
		Container c=getContentPane();//获取窗体容器
		c.setBackground(Color.BLUE);//设置窗体颜色
		JLabel l=new JLabel("这是一个窗体");
		c.add(l);//添加组件
		//c.remove(l);//删除容器中的组件
		c.validate();//验证容器中的组件,类似于刷新
	//	f.setContentPane(c);//重新载入容器
		
		setResizable(false);//设置窗体是否可以改变大小
		System.out.println("x="+getX()+"  y="+getY());//获取窗体的坐标
	}
	public static void main(String[] args) {
	new test1();
}
}

JDialog窗口的创建

对话框(Jdialog)一般是一个临时的窗口,主要用于显示提示信息或接受用户输入。所以,在对话框中一般不需要菜单条,也不需要改变窗口大小。此外,在对话框出现时,可以设定禁止其他窗口的输入,直到这个对话框被关闭。对话框是由 JDialog 类实现的。

/*代码实现*/
package test;
import java.awt.;
import javax.swing.*;
public class test2 extends JDialog{
	private static final long serialVersionUID = 1L;
		public test2(JFrame frame) {	//如果无JFrame参数则无法阻挡其他操作
		super(frame,"对话框标题",true);
		/*super()函数参数:
		 * 第一个参数:父窗体对象
		 * 第二个参数:对话框标题
		 * 第三个参数:是否阻塞父窗体
		 * true则会阻塞父类窗体
		 * false则不会
		 * 默认为true
		*/
		Container c=getContentPane();//获取窗体容器
		c.add(new JLabel("这是一个对话框"));
		
		setBounds(100,100,100,100);//设置窗体坐标和大小
		}
	public static void main(String[] args) {
		JFrame f=new JFrame("父窗体");
		f.setBounds(50, 50,300,300);
		Container c=f.getContentPane();
		JButton bt=new JButton("弹出对话框");
		c.setLayout(new FlowLayout());			//设置布局,用流布局
		c.add(bt);
		f.setVisible(true);
		f.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		bt.addActionListener(new ActionListener(){		//添加动作对象
			public void actionPerformed(ActionEvent e) {
			test2 d=new test2(f);
			d.setVisible(true);			//设置窗体可见,最好放在这
			};
		}); 				 //添加动作监听
	}	
}

标签(JLabel)和文本框(JTextfield)的使用

package test;
import java.awt.;
import javax.swing.*;
public class test3 extends JFrame {	
	private static final long serialVersionUID = 1L;
	public test3(){
		setBounds(100,100,230,100);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		Container c=getContentPane();
		c.setLayout(new FlowLayout());
/*		标签的使用
 * 		JLabel l=new JLabel("这是一个标签");	//创建一个标签
		l.setText("可以在这里更改标签能内容");
		l.getText();可以获取标签内容
		l.setFont(new Font("楷体",Font.BOLD,15);//设置字体,加粗或斜体,字号
		l.setForeGround(Color.RED);//设置字体颜色
		c.add(l);						//将标签添加到容器中
*/		JTextField as=new JTextField();
		as.setColumns(20);				//设置文本框长度为20个字符
		as.setText("li yong an");		//设置文本
		as.setFont(new Font("黑体",Font.PLAIN,20));//字体,样式,字号大小
		c.add(as);
		JButton bt=new JButton("确定");
		bt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("文本框中的内容为:"+as.getText());//获取文本框中的内容值
				as.setText("");//点击完后设置文本框中的内容为空,有清空效果
				as.requestFocus();//获取光标
						}
		});
		c.add(bt);
		setVisible(true);//设置窗口为可见	
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			new test3();
	}
}

下拉列表框的创建

package test;
import javax.swing.*;
import java.awt.*;
public class test5 extends JFrame{
	private static final long serialVersionUID = 1L;
	public test5() {
		setBounds(100,100,190,120);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		Container c=getContentPane();
		c.setLayout(null);
		
		//下面有三种创建下拉列表的方式
		
	/*	JComboBox<String> comboBox=new JComboBox<>();//下拉列表的创建
		comboBox.addItem("1");//一个一个添加添加列表元素
		comboBox.addItem("1");
		comboBox.addItem("1");
		comboBox.addItem("1");
		*/
		
	/*	String items[]= {"元素1","元素2","元素3"};
		JComboBox<String> comboBox=new JComboBox<>(items);//使用String添加下拉列表元素
	*/
		JComboBox<String> comboBox=new JComboBox<>();
		String items[]= {"元素1","元素2","元素3"};
		ComboBoxModel<String> cm=new DefaultComboBoxModel<>(items);//创建下拉列表模型
		comboBox.setModel(cm);//向列表中添加数据模型
		//对列表进行打印
		JButton bt=new JButton("打印");
		bt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("选中的索引:"+comboBox.getSelectedIndex());
				System.out.println("选中的值:"+comboBox.getSelectedItem());	
			}	
		});
		bt.setBounds(100,10,60,20);
		c.add(bt);
		comboBox.setEditable(true);//下拉列表是否可以编辑	
		comboBox.setBounds(10,10,80,30);//设置坐标和大小
		c.add(comboBox);
		setVisible(true);
	}
	public static void main(String[] args) {
		new test5();
	}
}

文本域的创建及使用(JTextArea)

package test;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class test2 extends JFrame{
	private static final long serialVersionUID = 1L;
	public test2() {
		setBounds(100,100,100,200);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c=getContentPane();		
		JTextArea area=new JTextArea();
		area.setText("这是文本域");
		area.setRows(5);//设定行
		area.setColumns(20);//设定列数
		area.append("添加内容");
		area.insert("插入", 2);//在第二个字后添加字符串
		area.setFont(new Font("楷体",Font.PLAIN,20));
		JScrollPane js=new JScrollPane(area);//给文本域添加滚动条
		c.add(js);
		setVisible(true);
	}
		public static void main(String[] args) {
			new test2();
	}
}

列表框的创建及使用

package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
	public class test1 extends JFrame {
		private static final long serialVersionUID = 1L;
		public test1(){
		setBounds(100,100,120,120);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		Container c= getContentPane();
		c.setLayout(null);
		String items[]= {"元素1","元素2","元素3","元素4","元素5","元素6"};
		//第一种创建列表框的方法
		/*string数组创建
		JList<String> jl=new JList<>(items);		
		*/
		//第二种创建文本框的方法,数据模型法                                                                              
		DefaultListModel<String> model=new DefaultListModel<>();//创建列表框的数据模型
		for(String tmp:items) {
			model.addElement(tmp);//向列表框载入数据元素
		}
		JList<String> jl=new JList<>();
		model.addElement("添加元素");//列表框载入新数据
		jl.setModel(model);//列表框载入数据模型
		
		/*
		 * 设置选择列表框元素的模式
		 * SINGLE_SELECTON:单选
		 * SINGLE_INTERVAL_SELECTION:只能选择相邻的元素
		 * MULTIPLE_INTERVAL_SELECTION:随便选
		 */
		jl.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
		
		JScrollPane js=new JScrollPane(jl);//为列表框添加滚动条
		js.setBounds(10,10,100,100);//设置坐标和大小
		c.add(js);
		/*这里只需要将滚动条添加到容器中就行(列表框会自动加入)
		 * 只需设置滚动条的大小和位置就行
		 */
		
		JButton bt=new JButton("确定");
		bt.setBounds(120,90,70,50);
		bt.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//获取列表框中选中的所有元素
				java.util.List<String> values=jl.getSelectedValuesList();
				for(String tmp:values) {
					System.out.println(tmp);
				}
				System.out.println("------end--------");
			}
		});	
		c.add(bt);
		setVisible(true);
}
		public static void main(String[] args) {
		new test1();
	}
}



面板JPanel:可以理解为窗体中的窗体

package test;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.*;

public class test1 extends JFrame{
	private static final long serialVersionUID = 1L;

	public test1() {
		setBounds(100,100,500,300);//设置坐标和宽高
		setDefaultCloseOperation(EXIT_ON_CLOSE);	//设置关闭规则
		Container c=getContentPane();		//获取窗体容器
		c.setLayout(new GridLayout(2,2));	//是用网格布局
		JPanel p1=new JPanel();				//面板
		p1.setLayout(new GridLayout(1,3,10,10));
		//面板P1使用网格布局
		JPanel p2=new JPanel(new BorderLayout());
		
		JPanel p3=new JPanel(new GridLayout(1,2,10,10));//一行两列
		
		JPanel p4=new JPanel(new GridLayout(2,1,10,10));//两行一列

		p1.setBorder(BorderFactory.createTitledBorder("面板1"));//添加边框和面板标题
		p2.setBorder(BorderFactory.createTitledBorder("面板2"));//添加边框和面板标题
		p3.setBorder(BorderFactory.createTitledBorder("面板3"));//添加边框和面板标题
		p4.setBorder(BorderFactory.createTitledBorder("面板4"));//添加边框和面板标题

		
		p1.add(new JButton("p1"));
		p1.add(new JButton("p1"));
		p1.add(new JButton("p1"));
		p1.add(new JButton("p1"));
		
		p2.add(new JButton("p2"),BorderLayout.CENTER);
		p2.add(new JButton("p2"),BorderLayout.SOUTH);
		p2.add(new JButton("p2"),BorderLayout.WEST);
		p2.add(new JButton("p2"),BorderLayout.NORTH);
		p2.add(new JButton("p2"),BorderLayout.EAST);
		
		p3.add(new JButton("p3"));p3.add(new JButton("p3"));
		p3.add(new JButton("p3"));p3.add(new JButton("p3"));
		
		p4.add(new JButton("p4"));p4.add(new JButton("p4"));
		p4.add(new JButton("p4"));p4.add(new JButton("p4"));
		
		c.add(p1);	c.add(p2);
		c.add(p3);	c.add(p4);
		
		setVisible(true);		
}
	public static void main(String[] args) {
		new test1();
	}
}

滚动面板的创建

//滚动面板的创建
package test;
import java.awt.Container;
import javax.swing.*;

public class test1 extends JFrame{
	public test1() {
	setBounds(100,100,500,500);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	
	Container c=getContentPane();
	JTextArea are=new JTextArea();
	JScrollPane sp=new JScrollPane(are);//创建滚动面板,给文本域添加滚动条
	c.add(sp);	
	setVisible(true);
}
	public static void main(String[] args) {
		new test1();
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值