java中swing组件的综合介绍和使用

  1. 首先我们要了解swing组件有哪些

    JButton;代表按钮,按钮里面可以放图片和文字

    JCheckBox;代表复选框组件

    JComBox;代表的是下拉列表框

    JFrame;代表框架类

    JDialog;对话框

    JLabel;标签组件

    JButton;按钮组件

    JRadioButton;单选钮组件

    JList;显示一系列内容的组件

    JTextField;文本框

    JPasswordField;密码框

    JTextArea;多行文本框,文本域

    JOpionPanel;对话框

以上组件的方法和用处大多是一致的,所以就不举例了,我们下面看综合实例即可知道他们的用处

贴上一个简单的用户注册信息窗体,里面包含了JLabel,JCheckBox,JButton,JRadioButton组件的使用

package demo;

import java.awt.*;

import javax.swing.*;

public class Demo3 extends JFrame{

JLabel jl1,jl2;

JCheckBox jc1,jc2,jc3;

JRadioButton jr1,jr2;

JButton jb1,jb2;

JPanel jp1,jp2,jp3;


public static void main(String[] args) {

// TODO Auto-generated method stub

new Demo3();


}

public Demo3(){

//初始化组件

jl1=new JLabel("你的兴趣爱好");

jl2=new JLabel("你的性别");

jc1=new JCheckBox("篮球");

jc2=new JCheckBox("足球");

jc3=new JCheckBox("羽毛球");

jr1=new JRadioButton("男");

jr2=new JRadioButton("女");

ButtonGroup bGroup=new ButtonGroup();

bGroup.add(jr1);

bGroup.add(jr2);

jb1=new JButton("注册");

jb2=new JButton("取消");

jp1=new JPanel();

jp2=new JPanel();

jp3=new JPanel();

//组件的合并

jp1.add(jl1);

jp1.add(jc1);

jp1.add(jc2);

jp1.add(jc3);

jp2.add(jl2);

jp2.add(jr1);

jp2.add(jr2);

jp3.add(jb1);

jp3.add(jb2);

//设置布局管理器的模式

this.setLayout(new GridLayout(3,1));

this.add(jp1);

this.add(jp2);

this.add(jp3);

//设置属性

this.setTitle("注册用户信息");

this.setSize(300, 150);

this.setLocation(200, 200);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

java中swing组件的综合介绍和使用

上面的案例包括了布局管理器的使用,接下来让我们来学习一下常用的布局管理器有哪几种

  1. 边界布局管理;BorderLayout

  2. 流式布局管理;FlowLayout

  3. 网格布局管理;GridLayout

    一般我们知道以上3种就可以了,在JFrame中,默认的是BorderLayout布局,而BorderLayout的特性是它以中,东,南,西,北的方式来布局,我们在放置组件时往往通过 .方向 (如:.SOUTH)来确定位置.

    FlowLayout它是并排以行数来放置组件的,位置不够时自动换行。

    GridLayout顾名思义就是网状来布局组件,通常我们在设置布局为网格布局时,往往会带上它的行列数。如:setLayout(new GridLayout(3,1)),设置了一个3行1列的网格布局。

学完了组件和布局,下面我们就来看下JPanel的使用

首先,JPanel也是一个容器,它默认的布局就是FlowLayout,它的作用往往是为了解决复杂布局的使用,下面看个例子来体验下综合布局中使用JPanel的效果。

package demo;

import java.awt.*;

import javax.swing.*;


public class Demo1 extends JFrame{

JPanel jp1,jp2;

JButton jb1,jb2,jb3,jb4,jb5,jb6;

public static void main(String[] args) {

new Demo1();

}

public Demo1(){

jp1=new JPanel();

jp2=new JPanel();

jb1=new JButton("桃子");

jb2=new JButton("西瓜");

jb3=new JButton("葡萄");

jb4=new JButton("苹果");

jb5=new JButton("香蕉");

jb6=new JButton("橘子");

//把按钮添加到JPanel里面去

jp1.add(jb1);

jp1.add(jb2);

jp2.add(jb3);

jp2.add(jb4);

jp2.add(jb5);

//把所有布局放到JFrame

this.add(jp1,BorderLayout.NORTH);

this.add(jb6,BorderLayout.CENTER);

this.add(jp2,BorderLayout.SOUTH);

//设置JFrame的属性

this.setTitle("多布局的混合使用");

this.setLocation(200, 200);

this.setSize(300, 150);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}


}

java中swing组件的综合介绍和使用

JPanel的作用不中体现在一方面,后面我们学习到java绘图技术也能用到

好了,最后我们就学习一下监听器吧,所谓监听器就是组件的监听事件

    在这里我还举例最常用的监听来说,因为这一章节的内容都是千篇一律的用法,我们掌握了最基本的就可以了。

/**

 * 登陆窗体的实现,并响应按钮事件

 */

package com.demo;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.*;


public class Test3 extends JFrame implements ActionListener{


JLabel jla1,jla2;

JTextField jf;

JPasswordField jps;

JButton jb1,jb2;

JPanel jp1,jp2,jp3;

public static void main(String[] args) {

// TODO Auto-generated method stub

new Test3();

}

public Test3(){

jla1=new JLabel("用户名");

jla2=new JLabel("密  码");

jf=new JTextField(10);

jps=new JPasswordField(10);

jb1=new JButton("登陆");

jb1.addActionListener(this);

jb2=new JButton("退出");

jp1=new JPanel();

jp2=new JPanel();

jp3=new JPanel();

//合并组件

jp1.add(jla1);

jp1.add(jf);

jp2.add(jla2);

jp2.add(jps);

jp3.add(jb1);

jp3.add(jb2);

//设置布局管理器

this.setLayout(new GridLayout(3,1));

//增加到管理器中

this.add(jp1);

this.add(jp2);

this.add(jp3);

//设置Jframe的相关属性

this.setTitle("登陆");

this.setSize(300, 200);

this.setResizable(false);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(jf.getText().equals("")|| jps.getText().equals(""))

{

JOptionPane.showMessageDialog(null, "账号名或者密码不能为空");

}

else

JOptionPane.showMessageDialog(null, "登陆成功");


}}

/**

 * 用按钮把数组的内容添加到下拉列表框里

 */

package com.demo;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;


import javax.swing.*;


public class Test2 extends JFrame implements ActionListener{


JButton jButton;

JComboBox jcBox;

String []str={"hello","what","bitch","fuck"};

 

public static void main(String[] args) {

// TODO Auto-generated method stub

new Test2();

}

public Test2(){

jButton=new JButton("add");

jButton.addActionListener(this);

jcBox=new JComboBox();

this.add(jcBox,BorderLayout.NORTH);

this.add(jButton,BorderLayout.SOUTH);

this.setTitle("hello");

this.setSize(300, 200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

for(int i=0;i<str.length;i++){

jcBox.addItem(str[i]);

}

}


}

最后说一句,现在java绘图和swimng相对不那么重要了,但基本的我们还是要了解的。

你可能感兴趣的:(java中swing组件的综合介绍和使用)