java组件及事件处理【概述、窗口、常用组件与布局】

文章资讯 2020-06-14 16:53:21

java组件及事件处理【概述、窗口、常用组件与布局】

目录(一)JavaSwing概述(二)窗口(1)JFrame常用方法(2)菜单、菜单条、菜单项(三)常用组件与布局(1)常用组件(2)常用容器(3)常用布局
(一)JavaSwing概述
通过图形用户界面(GUI),用户和程序之间可以方便的进行交互。Java的java.awt包,即java抽象窗口工具包(AWT)提供了许多用来设计GUI的组件类。java早期进行用户界面设计时,主要使用java.awt包提供的类,比如button(按钮)、textfield(文本框)、st(列表)等。
(二)窗口
(1)JFrame常用方法
i.JFrame(Stringa)创建一个窗体对象,并指定标题
setSize(intwidth,intheight)设置窗体大小
setBackgorund(color.d)设置窗体背景颜色
setLocation(intx,inty)设置组件的显示位置
setLocation(oint)通过oint来设置组件的显示位置
setVisible(truefalse)显示或隐藏组件
add(Comonentcom)向容器中增加组件
setLay·out(LayoutManagermgr)设置局部管理器,设置为nl表示不使用
ack()调整窗口大小,以适合其子组件的首选大小和局部
getContentane()返回此窗口的容器对象
ii.Comonent类的子类及间接子类创建的对象称为一个组件;Container类的子类及间接子类创建的对象称为一个容器;可以通过add方法向容器中添加组件;可以通过moveAll方法移除容器中的所有组件;move(Comonentc)方法移除指定的组件;容器本身也是一个组件,可以把一个容器嵌套在另一个容器中;当容器中添加或移除组件时,应让容器调用vadate方法,保证容器中的组件能正确显示出来。
ubcclasstext1{
ubcstaticvoidmain(String[]args){
JFramejFrame=newJFrame("窗口");创建一个标题为窗口的窗口
Containercontainer=jFrame.getContentPane();
container.setBackground(Color.d);设置背景为红色
jFrame.setVisible(true);设置窗口可见
jFrame.setBounds(200,200,200,200);设置窗口的位置和长,宽
jFrame.setDefatCloseOeration(JFrame.EXIT_ON_CLOSE);退出程序
}
}
效果(2)菜单、菜单条、菜单项
菜单条、菜单、菜单项是窗口常用的组件,菜单放在菜单条里,菜单项放在菜单里。JComonent的子类JMenuBar负责创建菜单条,JMenuBar的一个实例就是一个菜单条;子类JMenu负责创建菜单,JMenu的一个实例就是一个菜单;子类JMenuItem负责创建菜单项,JMenuItem的一个实例就是一个菜单项。菜单本身也是一个菜单项,可以将菜单看作菜单项添加到某个菜单中。菜单项通过setIcon方法为菜单项设置图标。
ubcclasstext1extendsJFrame{JMenuBarjMenuBar;
JMenujMenu1,jMenu2;
JMenuItemitem1,item2;
text1(){
setLayout(newFlowLayout());
jMenuBar=newJMenuBar();菜单条
jMenu1=newJMenu("菜单");菜单
jMenu2=newJMenu("软件");菜单里的菜单
item1=newJMenuItem("计算机");菜单项
item2=newJMenuItem("物流");
jMenu2.add(newJMenuItem("汽车"));
jMenu2.add(newJMenuItem("飞机"));
setJMenuBar(jMenuBar);
jMenuBar.add(jMenu1);
jMenu1.add(jMenu2);
jMenu1.add(item1);
jMenu1.add(item2);
setVisible(true);
setDefatCloseOeration(JFrame.EXIT_ON_CLOSE);
setBounds(200,200,200,200);
}
ubcstaticvoidmain(String[]args){
text1text1=newtext1();
}
}(三)常用组件与布局
(1)常用组件
常用组件都是JComonent的子类
JTextField:文本框:允许用户输入单行文本
JTextAa:文本区:允许用户输入多行文本
JButton:按钮:单击按钮
JLabel:标签:为用户提供提示信息
JCheckBox:复选框:为用户提供多项选择,有选中与未选中两种状态
JRadioButton:单选按钮:为用户提供单项选择
JComboBox:下拉列表:单项选择
JPasswordField:密码框,默认显字符是*,可通过setEchoChar(charc)重新设置显字符
ubcclasstext1extendsJFrame{
JComboBox<String>comboBox;
JRadioButtonradioButton1,radioButton2;
ButtonGrougrou;
JCheckBoxcheckBox1,checkBox2;
text1(){
setLayout(newFlowLayout());
checkBox1=newJCheckBox("音乐天地");
checkBox2=newJCheckBox("美术天地");
radioButton1=newJRadioButton("男");
radioButton2=newJRadioButton("女");
grou=newButtonGrou();
grou.add(radioButton1);
grou.add(radioButton2);
comboBox=newJComboBox<>();
comboBox.addItem("软件");
comboBox.addItem("计算机");
dd(comboBox);
add(radioButton1);
add(radioButton2);
add(checkBox1);
add(checkBox2);
setVisible(true);
setDefatCloseOeration(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,400,200);
}
ubcstaticvoidmain(String[]args){
text1text3=newtext1();
}
}效果如下:(2)常用容器
JPanel面板:默认是FlowLayout布局,可以向面板中添加组件,再把面板添加到其他容器中
JTabbedPane:选项卡容器,当向选项卡容器添加组件时,会为这个组件设置选项卡,这样点击这个选项卡就会显示这个组件,选项卡默认在顶部从左向右排列。也可以通过JTabbedPane.TOP等设置位置
JScrollPane:滚动窗格,可以将文本区放在滚动窗格中JScrollPanejScrollPane=newJScrollPane(newTextAa())JStPane:拆分窗格,可分为左右或上下两部分,有两个构造方法:JStPane(inta,Comonentb,Comonentc)
参数a决定时水平还是垂直:HORIZONTAL_SPLIT,VERTICAL_SPLIT

JStPanejStPane=newJStPane(JStPane.VERTICAL_SPLIT,newJButton(),newJButton())
JStPane(inta,booleand,Comonentb,Comonentc)
参数d是决定拆分线移动时,组件是否连续变化,true是连续(3)常用布局
1.FlowLayout布局(流式布局)
2.BorderLayout布局(边界布局)
3.CardLayout布局(卡片布局)
4.GridLayout布局(网格布局)
5.nl布局(空布局)
6.BoxLaYout布局(盒子布局)
流式布局
imortjava.awt.FlowLayout;
imortjavax.swing.JFrame;
imortjavax.swing.JButton;
classtext1
{
ubcstaticvoidmain(Stringargs[])
{
JFrameframe=newJFrame("流式布局");
frame.setLayout(newFlowLayout(FlowLayout.CENTER,3,3));
JButtonbutton=nl;
for(inti=0;i<5;i++)
{
button=newJButton("按钮"+i);
frame.add(button);
}
frame.setSize(300,300);
frame.setVisible(true);
}
}
边界布局
imortjava.awt.BorderLayout;
imortjavax.swing.JButton;
imortjavax.swing.JFrame;
classtext1
{
ubcstaticvoidmain(Stringargs[])
{
JFrameframe=newJFrame("边界布局");
frame.setLayout(newBorderLayout(3,3));
frame.add(newJButton("东"),BorderLayout.EAST);
frame.add(newJButton("西"),BorderLayout.WEST);
frame.add(newJButton("南"),BorderLayout.SOUTH);
frame.add(newJButton("北"),BorderLayout.NORTH);
frame.add(newJButton("中"),BorderLayout.CENTER);
frame.setSize(200,200);
frame.setVisible(true);
}
}