java语法学习(13)GUI——Swing 常用组件

面板组件

JPanel

是一个无边框,不能被移动,放大,缩小或者关闭的面板,它的默认布局管理器是FlowLayout 可以使用构造函数 JPanel (LayoutManager layout) 或者它的 setLayout()方法为其制定布局管理器

JScrollPane

是一个带有滚动条的面板容器,而且这个面板容器只能添加一个组件,如果想向JScrollPane面板中添加多个组件应该先将这多个组件添加到某个组件中,然后再将这个组件添加到JScrollPane中
常用构造方法:

函数解释
JScrollPane()创建一个空的JScrollPane 面板
JScrollPane(Component view)创建一个显示指定组件的JScrollPane 面板,只要组件的内容超过视图大小就会显示水平和垂直滚动条
JScrollPane(Component view, int vsbPolicy,int hsbPolicy)创建一个显示指定容器,并具有指定滚动条策略的JScrollPane.参数vsbPolicy 和参数hsbPolicy 分别表示垂直滚动条策略和水平滚动条策略

JScrollPane 设置面板滚动策略的方法

函数解释
void setHorizontalBarPolicy(int policy) :指定水平滚动策略,即水平滚动条何时显示在滚动面板上
void setVerticalBarPolicy(int policy):指定垂直滚动条策略,即垂直滚动条何时显示在滚动面板上
void setViewportView(Component view):设置在滚动面板显示的组件

ScrollPaneConstants接口中声明了多个常量属性可以用来设置不同的滚动策略

属性解释
VERTICAL_SCROLLBAR_AS_NEEDED当填充的组件视图超过客户端窗口大小时,自动显示
HORIZONTAL_SCROLLBAR_AS_NEEDED水平和竖直放行滚动条(默认)
VERTICAL_SCROLLBAR_ALWAYS无论填充的组件视图大小,始终显示水平和竖直方向滚动条
HORIZONTAL_SCROLLBAR_ALWAYS
VERTICAL_SCROLLBAR_NEVER无论填充的组件视图大小,始终不显示水平和竖直方向滚动条
HORIZONTAL_SCROLLBAR_NEVER
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			 //创建并设置JFrame 容器窗口
			JFrame f = new JFrame("FlowLayout");
			//所有组件左对齐,水平间距为20,垂直间距为30
			f.setLayout(new GridLayout(3,3));
			f.setSize(500,500);
			f.setLocation(600, 300); // 设置窗体在界面出现的位置
			JScrollPane scro = new JScrollPane();
			scro.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
			scro.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
			JPanel panel = new JPanel();
			JButton but1 = new JButton("1");
			
			panel.add(but1);
			scro.setViewportView(panel);
			f.add(scro,BorderLayout.CENTER);
			f.setVisible(true);
			
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		}
}

文本组件

文本组件用于接收用户输入的信息,其中包括文本框(JTextField),文本域(JTextArea)等,它们都有一个共同父类JTextComponent,该类是一个抽象类

函数解释
String getText()返回文本组件中所有的文本内容
String getSelectedText()返回文本组件中选定的文本内容
void selectAll()在文本组件中选中所有内容
void setEditable()设置文本组件为可编辑或者不可编辑状态
void setTest(String text)设置文本组件的内容
void replaceSelection(String content)用给定的内容替换当前选定的内容

JTextField

只能接收单行文本的输入
常用构造方法

函数解释
JTextField()创建一个空的文本框,初始字符串为null
JTextField(int columns)创建一个具有指定列数的文本框,初始字符串为null
JTextField(String text)创建一个显示指定初始字符串的文本框
JTextField(String text,int column)创建一个具有指定列数,并显示指定初始字符串的文本框

该类还有一个子类JPasswordField,它表示一个密码框,只能接收用户的单行输入,但是不显示,只显示 * 构造方法类似

JTextArea

JTextArea 称为文本域,它能接收多行文本的输入,构造方法如下:

函数解释
JTextArea()构造函数,创建一个空的文本域
JTextArea(String text)创建显示指定初始字符串的文本域
JTextArea(int rows, int columns)创建具有指定行和列的文本域
JTextArea(String text,int rows,int columns)创建。。。。。
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			 JFrame f = new JFrame();
			 f.setLayout(new BorderLayout());
			 f.setSize(400,300);
			 f.setLocation(300, 200);
			 f.setVisible(true);
			 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			 JTextArea  area = new JTextArea(12,34);
			 JScrollPane scro = new JScrollPane(area);
			 area.setEditable(false);
			 JTextField input = new JTextField(20);
			 JButton btn = new JButton("发送");
			 btn.addActionListener(e -> 
			 {
				 String cont = input.getText();
				 if (cont != null && !cont.trim().equals(""))
				 {
					 area.append("本人输入信息:" + cont + "\n");
				 }
				 else 
				 {
					 area.append("聊天消息不能为空!!!" + "\n");
				 }
			 });
			 
			 JPanel p = new JPanel();
			 JLabel label = new JLabel("聊天信息");
			 p.add(label);
			 p.add(input);
			 p.add(btn);
			 f.add(scro,BorderLayout.PAGE_START);
			 f.add(p,BorderLayout.PAGE_END);
		}   
}

标签组件

用于展示的标签组件JLabel
常用构造方法:

函数解释
JLabel()创建无图像并且标题为空字符串的JLabel
JLabel(Icon image)创建具有指定图像的JLabel
JLabel(Icon image, int horizontalAlignment)创建具有指定图像和水平对齐方式的JLabel
JLabel(String text)创建具有指定文本的JLabel实例
JLabel(String text,Icon image,int horizontalAlignment)
JLabel(String text,int horizontalAlignment)
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame();
			f.setSize(500,500);
			f.setLocation(500, 300);
			f.setVisible(true);
			f.setLayout(new BorderLayout());
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			JLabel la = new JLabel("no.1");
			ImageIcon icon = new ImageIcon("1.jpg");
			Image img = icon.getImage();
			img = img.getScaledInstance(300, 150, Image.SCALE_DEFAULT);
			icon.setImage(img);
			la.setIcon(icon);
			JPanel p = new JPanel();
			JLabel la2 = new JLabel("welcome",JLabel.CENTER);
			p.add(la2);
			f.add(la,BorderLayout.PAGE_START);
			f.add(p,BorderLayout.PAGE_END);
		}
}

按钮组件

在Swing中常见的按钮组件有JButton,JCheckBox,JRadioButton等,它们都是抽象类
AbstractButton类的直接或间接子类,在AbstractButton类中提供了按钮组件通用的一些方法常用方法

函数解释
Icon getIcon()获取按钮的图标
void setIcon(Icon icon)设置按钮的图标
String getText()获取按钮的文本
void setText(String text)设置按钮的文本
void setEnable(boolean b)设置按钮是否可用
boolean setSelected(boolean b)设置按钮是否为选中状态
boolean isSelected()返回按钮的状态(true 为选中,反之为未选中)

JCheckBox

复选框组件,有选中和未选中两种状态,通常复选框会有很多个,用户可以选择其中一个或者多个

函数解释
JCheckBox()创建一个没有文本信息,初始状态为未被选择的复选框
JCheckBox(String text)创建一个带有文本信息,初始状态未被选中的复选框
JCheckBox(String text,boolean selected)创建一个带有文本信息,并指定初始状态(选中/未选中)的复选框
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame();
			f.setSize(500,600);
			f.setLocation(500, 600);
			f.setVisible(true);
			f.setLayout(new BorderLayout());
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			JLabel la = new JLabel("hello world!",JLabel.CENTER);
			la.setFont(new Font("宋体", Font.PLAIN,20));
			JPanel p = new JPanel();
			JCheckBox it = new JCheckBox("itallc");
			JCheckBox bo = new JCheckBox("blod");
			ActionListener lis = new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					int mode = 0;
					if(bo.isSelected()) mode += Font.BOLD;
					if(it.isSelected()) mode += Font.ITALIC;
					la.setFont(new Font("宋体",mode,20));
					
				}
			};
			it.addActionListener(lis);
			bo.addActionListener(lis);
			p.add(it);
			p.add(bo);
			f.add(la);
			f.add(p,BorderLayout.PAGE_END);
		}
}

JRadioButton

为单选按钮组件,与JCheckBox复选框不同的是,单选按钮只能选中一个就像收音机上的电台控制按钮一样,按下一个另一个就会自动弹起
需要ButtonGroup类,这是一个不可见组件,可以实现单选功能
常用构造函数:

函数解释
JRadioButton()创建一个没有文本信息,初始化状态未被选中的单选框
JRadioButton(String text)创建一个带有文本信息,初始化状态未被选定的单选框
JRadioButton(String text,boolean selected)创建一个具有文本信息,并指定初始化状态(选中/未选中)的单选框
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame();
			f.setSize(500,600);
			f.setLocation(500, 600);
			f.setVisible(true);
			f.setLayout(new BorderLayout());
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			JLabel la = new JLabel("hello world!",JLabel.CENTER);
			la.setFont(new Font("宋体", Font.PLAIN,20));
			JPanel p = new JPanel();
			//创建一个按钮组组件
			ButtonGroup group = new ButtonGroup();
			JRadioButton it = new JRadioButton("itallc");
			JRadioButton bo = new JRadioButton("blod");
			group.add(it);
			group.add(bo);
			ActionListener lis = new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					int mode = 0;
					if(bo.isSelected()) mode += Font.BOLD;
					if(it.isSelected()) mode += Font.ITALIC;
					la.setFont(new Font("宋体",mode,20));
					
				}
			};
			it.addActionListener(lis);
			bo.addActionListener(lis);
			p.add(it);
			p.add(bo);
			f.add(la);
			f.add(p,BorderLayout.PAGE_END);
		}
}

下拉框组件

JComboBox组件被称为下拉框或者组合框,它将所有选项折叠在一起,默认显示的是第一个添加的选项。当用户单击下拉框时,会出现下拉式的选择列表,用户可以从中选择其中一项并添加,分为不可编辑下拉框组件和可编辑下拉框组件两种形式
常用构造函数

函数解释
JComboBox()创建一个没有可选项的下拉框
JComboBox(Object[] items)创建一个下拉框,将Object数组中的元素作为下拉框的下拉列表选项
JComboBox(Vector items)创建一个下拉框,将Vector集合中的元素作为下拉框的下拉列表选项

常用方法:

函数解释
void addItem(Object anObject)为下拉框添加选项
void insertItemAt(Object anObject, int index)在指定的索引处插入选项
Object getItemAt(int index)返回指定索引处选项,第一个选项的索引为0
int getItemCount()返回下拉框中选项的数目
Object getSelectedItem()返回当前所选项
void removeAllItems()删除下拉框中所有的选项
void removeItem(Object object)从下拉框中删除指定选项
void removeItemAt(int index)移除指定索引处的选项
void setEditable(boolean aFlag)设置下拉框的选项是否可编辑,aFlag 为true 可编辑反之不行
e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame();
			f.setSize(300,300);
			f.setLocation(500, 300);
			f.setLayout(new BorderLayout());
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			f.setVisible(true);
			JPanel p = new JPanel();
			//创建下拉组件
			JComboBox<String> box = new JComboBox<>();
			box.addItem("请选择城市");
			box.addItem("北京");
			box.addItem("成都");
			box.addItem("遂宁");
			box.addItem("青岛");
			JTextField text = new JTextField(20);
			box.addActionListener(e -> {
				String item = (String) box.getSelectedItem();
				if("请选择城市".equals(item))
				{
					text.setText(item);
				}
				else
				{
					text.setText("你选择的城市是: "+ item);
				}
			});
			p.add(box);
			p.add(text);
			f.add(p,BorderLayout.PAGE_START);
		}
}

菜单组件

下拉式菜单

三组件:
JMenuBar(菜单栏)
表示一个水平的菜单栏,它用来管理一组菜单,不参与交互菜单栏可以放在任何位置,通常是放在顶级容器的顶部使用(JFrame JDialog)的setMenuBar()方法,JMenuBar 有一个无参的构造函数,只需使用new就可以创建,然后调用add(JMenu c)方法为其添加JMenu 菜单
JMenu(菜单)
表示一个菜单,它用来整合管理菜单项菜单可以是单一层次,也可以是多层次结构一般使用JMenu(String text)构造函数创建text表示菜单上的文本内容
JMenu常用方法

函数解释
JMenuItem add(JMenuItem menuItem)将菜单项添加到菜单末尾,返回此菜单项
void addSeparator()将分隔符添加到菜单的末尾
JMenuItem getItem(int pos)返回指定索引处的菜单项,第一个菜单项的索引为0
int getItemCount()返回菜单上的项数,菜单项和分隔符都计算在内
JMenuItem insert(JMenuItem menuItem, int pos)指定索引处插入菜单项
void insertSeparator(int pos)在指定索引处插入分隔符
void remove(int pos)从菜单中移除指定索引处的菜单项
void remove(JMenuItem menuItem)从菜单中移除指定的菜单项
void removeAll()从菜单中移除所有的菜单项

JMenuItem(菜单项)
是菜单系统中最基本的组件。
在创建JMenuItem菜单项时,通常会使用JMenumItem(String text)这个构造方法为菜单项指定文本内容,JMenuItem 继承自AbstractButton类,因此可以把它看成是一个按钮,如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标

e.g:
package Doit;
import javax.swing.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame("JF窗口");
			f.setSize(500, 600);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			f.setLocation(500, 300);
			JMenuBar meu = new JMenuBar();
			JMenu m1 = new JMenu("文件(N)");
			JMenu m2 = new JMenu("帮助(H)");
			meu.add(m1);
			meu.add(m2);
			JMenuItem t1 = new JMenuItem("新建(N)");
			JMenuItem t2 = new JMenuItem("退出(X)");
			m1.add(t1);
			m1.addSeparator();
			m1.add(t2);
			t1.addActionListener(e ->
			{
				JDialog dialog = new JDialog(f,"无标题",true);
				dialog.setSize(200,100);
				dialog.setLocation(300,200);
				dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
				dialog.setVisible(true);
			});
			t2.addActionListener(e->System.exit(0));
			f.setJMenuBar(meu);
			
		}
}

弹出式菜单

就是单击鼠标右键会出现一个菜单,这就是弹出式菜单
JPopupMenu
和下拉式菜单一样通过调用add()方法来添加菜单项,但它默认是不可见如果想要显示出来,则必须调用它的show(Component invoker,int x,int y)invoker 表示JPopupMenu 菜单显示位置的参考组件,x和y表示invoker组件坐标空间中的一个坐标,显示的是JPopupMenu菜单的左上角坐标

e.g:
package Doit;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Gui {
		public static void main(String[]arge)
		{
		   Gui gui = new Gui();
		   gui.createGui();
		}
		private  void createGui()
		{
			JFrame f = new JFrame("JF窗口");
			f.setSize(500, 600);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			f.setLocation(500, 300);
			JPopupMenu pop = new JPopupMenu();
			JMenuItem t1 = new JMenuItem("查看");
			JMenuItem t2 = new JMenuItem("刷新");
			pop.add(t1);
			pop.addSeparator();
			pop.add(t2);
			f.addMouseListener(new MouseAdapter()
					{
						public void mouseClicked(MouseEvent e)
						{
							if(e.getButton() == MouseEvent.BUTTON3)
							{
								pop.show(e.getComponent(),e.getX(),e.getY());
							}
						}
					});
			
		}
}
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
整理了Java GUI编程基础知识! public class AllFrame { /** * 这里的代码涉及到 GUI 编程基本面板、基本组件、事件(ActionListener、ChangeListener、MouseListener) */ public AllFrame() { // new 一个主窗体 也可以这样写 new MainFrame(); MainFrame mf = new MainFrame(); } public static void main(String[] args) { new AllFrame(); } // 主窗体 继承 窗体基本格式 类 Jframe 以下弹出窗口均继承 Jframe class MainFrame extends Jframe implements ActionListener { JMenuBar menubar = new JMenuBar();;// 菜单条 JMenu jmenu[] = new JMenu[5];// panelMenu,usedMenu1,usedMenu2,layoutMenu,helpMenu; // 菜单项 JButton closebtn;// 关闭窗体 // 具体的选项 JMenuItem panelitem[] = new JMenuItem[4]; JMenuItem useditem1[] = new JMenuItem[6]; JMenuItem useditem2[] = new JMenuItem[6]; JMenuItem layoutitem[] = new JMenuItem[3]; JMenuItem helpitem = new JMenuItem("关于"); // 菜单中名称 String menu[] = { "面板使用", "常用组件一", "常用组件二", "布局设置", "帮助" }; String pane[] = { "普通面板", "滚动面板", "分割面板", "选项面板" }; String uesd1[] = { "标签", "按钮", "文本框", "文本域", "单选按钮" ,"微调"}; String uesd2[] = { "滑块","复选框", "下拉菜单", "列表", "表格", "树状" }; String layout[] = { "流式布局", "边界布局", "网格布局" }; // Jpanelitem,Jscrollpaneitem,Splitpaneitem,JTabbedpanelitem, // Jlabelitem,Jbuttonitem,JTextfielditem,JTextareaitem,JRadiobuttonitem, // JCheckboxitem,JCombomoxitem,Jlistitem,Jtableitem,Jtreeitem, // Flowlayoutitem,Borderlayoutitem,Girdlayoutitem, // Helpitem}; public MainFrame() { this.setTitle("JAVA图型界面学GUI)"); // 加载菜单条到窗体中 this.setJMenuBar(menubar); // 重新设置大小 this.setSize(380, 290); // 简单的居中方法 在窗体基本格式类 Jframe 中有详细的居中方法 this.setLocationRelativeTo(null); // 设置关闭窗口 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 调用方法 menu(); // 设置容器 Container con = this.getContentPane(); // 定义一个 标签 “JAVA图型界面学” JLabel jl = new JLabel("JAVA图型界面学"); // 组件 设置字体大小, 其他组件用法相同 jl.setFont(new Font("隶书", Font.BOLD, 24)); // 具体定位 组件名.setBounds(x, y, width, height) jl.setBounds(30, 30, 280, 50); // 把标签加到 con 容器中 con.add(jl); /

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dearzcs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值