java中swing組件的綜合介紹和使用

  1. 首先咱們要了解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);

}

}


上面的案例包括了佈局管理器的使用,接下來讓咱們來學習一下經常使用的佈局管理器有哪幾種

  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);

}


}


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相對不那麼重要了,但基本的咱們仍是要了解的。

相關文章
相關標籤/搜索