第四十七节 java学习——JAVA.SWing包

基本组件


JButton 为轻量级组件,对应着button组件类。
Jlabel为轻量级标签组件,对应着label组件类。
Jcheckbox为轻量级复选框,对应checkbox类。
jradiobutton为轻量级单选框,需要添加在

buttongroup组中。
jradiobutton jmale=new jradiobutton("男");
jradiobutton jfemale=new jradiobutton("女");
group.add(jmale);
group.add(jfemale);
jcomobox对应choice组件,但是添加项的方法不同,使用的additem方法,例如
jcombobox cmbjob=new jcombobox();
cmbjob.additem("aaaa");
cmbjob.additem("bbbb");
cmbjob.additem("cccc");
cmbjob.additem("dddd");
jtextfield组件为对单行文本进行编辑的轻量级组件,对应textfield类。
jtextarea组件用于在多行区域中显示春文本并进行编辑。
jpanel为轻量级面板控件,对应原来的panel类。
japplet类继承自applet类
jtable
jtable是用于显示和编辑的两维表单元。它的构造函数和常用方法为:
public jtable()
构造一个空的Jtable对象。
public void setModet(tableModel datamodel)
为表对象设置数据模型datamodel,并将数据模型进行注册。
defaulttablemodel是一个实现模型,使用一系列vector对象实现表单元数据的填充。它的构造

函数和常用的方法为:
public defaulttablemodel()
构造函数
public void addcolumn(object columname)
添加一列标题
public void addRow(vector rowData)
在模型对象的末尾添加一行vector对象的数据。
构造jtable对象的步骤如下;
1>构造一个空jtable对象
jtable tblinf=new jtable();
2>构造defaulttablemodel对象,用setModel方

法将此对象绑定到jtable上。
defaulttablemodel dtm=new  defaulttablemodel();
3>具体实现defaulttablemodel对象(addcolomn方法实现列标题设置,addrow方法实现数据添加)。
(1)初始化vector列表,添加列标题
Vector vcdata=new Vector();
 vcdata.add("姓名:");
 vcdata.add("身份证号:");
 vcdata.add("性别:");
 tblInf.setModel(dtm);
 for(int i=0;i<vcdata.size();i++){

  dtm.addColumn((String)

vcdata.elementAt(i));

}
(2)初始化vector列表,添加列数据
 Vector vrdata=new Vector();
  vrdata.add("王飞:");
  vrdata.add("122432546547655865");
  vrdata.add("男");
  dtm.addRow(vrdata);
(3)jtable没有内嵌滚动条功能,将之放入jscrollpane对象中并进行显示。
jscrollpane s=new jscrollpane(tblinf);
getcontentpane().add(s,borderlayout.center);


jtree


jtree控件用于显示一系列分层数据,即树状显示。
它的构造函数和常用方法为:
public void setModel(TreeModel newModel)
设置及提供数据的TreeModel模型,TreeModel是一个接口,接口内实现的类为DefaultModel类,defaulttreemodel是一个使用treenodes的简单树数据模型,下面给出它的构造函数。
public defaulttreemodel(treenode root)
创建根结点为root的树,其中每个结点都可以有子节点。treenode是一个接口,它包含一个defaulttreenode类,defaulttreenode类表达了一个树形数据结构中具有一般意义的结点。每个树结点至多有一个父节点,0个或多个子节点。其构造函数为:
public defaultmutabletreenode(object  userobject)
创建一个无父结点,无子结点的树结点。
public add(mutabletreenode newchild)
将newchild结点添加到树结点的末尾,使之称为当前结点的子结点。
创建树结构的步骤如下:
1》构建JTree对象
JTree tree=new JTree();
2》构造defaultmutabletreenode对象,使用

setmodel方法将defaultmutabletreenode对象绑定到Jtree对象。
tree.setModel(new DefaultTreeModel(root));
3》构造树。
1)构造根结点。
 defaultmutabletreenode root;
2)构造分支结点,添加到根结点。
DefaultMutableTreeNode nodename,nodenumber,nodesex;
 root=new DefaultMutableTreeNode("个人信息");
 nodename=new  DefaultMutableTreeNode("姓名");
 nodenumber=new  DefaultMutableTreeNode("身份证号");
 nodesex=new  DefaultMutableTreeNode("性别");
 root.add(nodename);
 root.add(nodenumber);
 root.add(nodesex);

3)添加叶子结点并添加到分支结点。

 leafname=new  DefaultMutableTreeNode("王飞");
 leafnumber=new  DefaultMutableTreeNode("1324353464645754");
 leafsex=new  DefaultMutableTreeNode("男");
 nodename.add(leafname);
 nodenumber.add(leafnumber);
 nodesex.add(leafsex);

4)使用DefaultMutableTreeModel的构造函数,将根结点作为参数构造树结构中的数据。
DefaultTreeModel dTree=new  DefaultTreeModel(root);
5)JTree没有内嵌的滚动条属性,较大的树状结构可以显示在JScrollbar上。
JScrollbar scroll=new JScrollbar(tree);
getContentPane().add(scroll);

 

程序例子:测试java.swring包


//程序名字为Test.java


import java.awt.*;
import java.util.Vector;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import  javax.swing.event.TreeSelectionEvent;
import   javax.swing.plaf.basic.DefaultMenuLayout;
import  javax.swing.table.DefaultTableModel;
import  javax.swing.tree.DefaultMutableTreeNode;
import  javax.swing.tree.DefaultTreeModel;
import  javax.swing.tree.TreeSelectionModel;
public class Test extends JFrame{

 JLabel lblName=new JLabel("姓名:");
 JLabel lblNumber=new JLabel("身份证号:");
 JLabel lblSex=new JLabel("性别:");
 JLabel lblJob=new JLabel("职业:");
 JLabel lblText=new JLabel("个性化宣言:");
 JTextField tfName=new JTextField(23);
 JTextField tfNumber=new

JTextField(20);
 JTextArea taText=new JTextArea(5,20);
 JRadioButton jMale=new

JRadioButton("男");
 JRadioButton jFemale=new JRadioButton("女");
 ButtonGroup group=new ButtonGroup();
 JComboBox cmbJob = new  JComboBox();
 JButton btnok=new JButton("确定");
 JButton btnDisplay=new JButton("取消");
 JTable tblInf=new JTable();
 DefaultTableModel dtm=new DefaultTableModel();//布局设置
 JTree tree=new JTree();
 JPanel p1=new JPanel();
 JPanel p2=new JPanel();
 JPanel p3=new JPanel();
 JPanel p4=new JPanel();
 JPanel p5=new JPanel();
 JPanel p6=new JPanel();
 JPanel p7=new JPanel(new  BorderLayout());
 JPanel p8=new JPanel();
 JPanel p9=new JPanel(new BorderLayout());
 public Test()
 {
  group.add(jMale);
  group.add(jFemale);
  cmbJob.addItem("计算机业");
  cmbJob.addItem("医生");
  cmbJob.addItem("教师");
  cmbJob.addItem("军队");
  p1.add(lblName);
  p1.add(tfName);
  p2.add(lblNumber);
  p2.add(tfNumber);
  p3.add(lblSex);
  p3.add(jMale);
  p4.add(lblJob);
  p4.add(cmbJob);
  p5.add(p3);
  p5.add(p3);
  p6.setLayout(new BorderLayout());
  p6.add(p1, BorderLayout.NORTH);
  p6.add(p2, BorderLayout.CENTER);
  p6.add(p5, BorderLayout.SOUTH);
  p7.add(lblText,BorderLayout.NORTH);
  p7.add(taText,BorderLayout.CENTER);
  p8.setLayout(new FlowLayout(FlowLayout.CENTER,30,10));
  p8.add(btnok);
  p8.add(btnDisplay);
  p9.add(p6,BorderLayout.NORTH);
  p9.add(p7,BorderLayout.CENTER);
  p9.add(p8,BorderLayout.SOUTH);
  //调用设置表的方法
  setTable();
  //调用设置树的方法
  setTree();
  getContentPane().add(p9,BorderLayout.NORTH);
  JScrollPane s=new JScrollPane();
  getContentPane().add(s,BorderLayout.CENTER);
  getContentPane().add(tree,BorderLayout.SOUTH);
   }
 //设置表,用Vector辅助添加
 public void setTable() {
 Vector vcdata=new Vector();
 vcdata.add("姓名:");
 vcdata.add("身份证号:");
 vcdata.add("性别:");
 tblInf.setModel(dtm);
 for(int i=0;i<vcdata.size();i++){
  dtm.addColumn((String)

vcdata.elementAt(i));
  Vector vrdata=new

Vector();
  vrdata.add("王飞:");
  vrdata.add("122432546547655865");
  vrdata.add("男");
  dtm.addRow(vrdata);
  
  
 }
 }
 //设置树
public void setTree() {
 DefaultMutableTreeNode root;
 DefaultMutableTreeNode leafname,leafnumber,leafsex;
 DefaultMutableTreeNode nodename,nodenumber,nodesex;
 root=new DefaultMutableTreeNode("个人信息");
 nodename=new DefaultMutableTreeNode("姓名");
 nodenumber=new DefaultMutableTreeNode("身份证号");
 nodesex=new DefaultMutableTreeNode("性别");
 leafname=new DefaultMutableTreeNode("王飞");
 leafnumber=new DefaultMutableTreeNode("1324353464645754");
 leafsex=new DefaultMutableTreeNode("男");
 root.add(nodename);
 root.add(nodenumber);
 root.add(nodesex);
 nodename.add(leafname);
 nodenumber.add(leafnumber);
 nodesex.add(leafsex);
 //设置tree渲染的基本属性
 tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
 tree.setShowsRootHandles(true);
 //树不可编辑
 tree.setEditable(false);
 tree.setModel(new

DefaultTreeModel(root));

  }

public static void main(String[] args) {
 Test ts=new Test();
 ts.setSize(400, 450);
 ts.show();
 
}
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值