首先咱們要了解swing組件有哪些
java
JButton;表明按鈕,按鈕裏面能夠放圖片和文字數組
JCheckBox;表明複選框組件框架
JComBox;表明的是下拉列表框ide
JFrame;表明框架類佈局
JDialog;對話框學習
JLabel;標籤組件this
JButton;按鈕組件spa
JRadioButton;單選鈕組件orm
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);
}
}
上面的案例包括了佈局管理器的使用,接下來讓咱們來學習一下經常使用的佈局管理器有哪幾種
邊界佈局管理;BorderLayout
流式佈局管理;FlowLayout
網格佈局管理;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);
}
}
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相對不那麼重要了,但基本的咱們仍是要了解的。