Java中表格组件JTable是最常用的,其属性也比较多,相对于其他组件来说要复杂些,对于初学者来说也是比较头痛的,下面写个例子简单的说明它的一些用法:这是我一个项目的内部窗口,不能单独运行。

  

    

package frames;


import java.awt.EventQueue;

import javax.swing.JInternalFrame;

import javax.swing.JLabel;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.MenuItem;

import java.awt.PopupMenu;

import javax.swing.BorderFactory;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPopupMenu;

import javax.swing.JScrollPane;

import javax.swing.SwingConstants;

import javax.swing.JPanel;

import javax.swing.JTextField;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.FocusAdapter;

import java.awt.event.FocusEvent;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JButton;

import mold.Type;

import dao.DbUtil;

import java.awt.Dimension;

import javax.swing.JTable;

import javax.swing.border.Border;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.JTableHeader;

import javax.swing.table.TableColumn;

import javax.swing.table.TableColumnModel;

import javax.swing.table.TableModel;


public class TypeAdd extends JInternalFrame {

     private JTextField textField_1;

     private JLabel label;

     private JTable table;

     private JButton button;

     String[] COLUMN={"物料编号","物料名称"};//表格的列

     private JPopupMenu pop;//弹出菜单,用于单击鼠标右键弹出选择菜单删除表格中选中的行

     private JMenuItem delete,modif;

     private Object[][] result;

     private DefaultTableModel model;//声明定义表格的模型

     private Object[][] getFileStates(List list){   //获取二维数组的方法

    Object[][] types=new Object[list.size()][2];

      for(int i=0;i<list.size();i++){

      Type type=(Type) list.get(i);

      types[i][0]=type.getToolid();

      types[i][1]=type.getToolname();

      

      }

return types;

    }

/**

* Create the frame.

*/

public TypeAdd() {

setTitle("材料种类添加");

setBounds(100, 100, 483, 391);

setClosable(true);

setIconifiable(true);

pop = new JPopupMenu();//初始化弹出菜单

pop.add(delete = new JMenuItem("删除"));

delete.addActionListener(new ActionListener() {  //给删除菜单项添加动作监听器

@Override

public void actionPerformed(ActionEvent e) {

// TODO 自动生成的方法存根

int i=table.getSelectedRow();

String  name=(String) table.getValueAt(i, 1);

int x=0;

x=DbUtil.delType(name);

if(x>0){

String message="成功删除"+x+"项";

JOptionPane.showMessageDialog(null,message);

         //下面几行代码用于当我们删除了表格行时实时更新表格

result=getFileStates(DbUtil.selectTools());

model=new DefaultTableModel(result,COLUMN);

table.setModel(model);

TableColumnModel          columnModel=table.getColumnModel();//设置列宽         

        TableColumn column = columnModel.getColumn(0);

        column.setPreferredWidth(100);

        TableColumn column1 = columnModel.getColumn(1);

        column1.setPreferredWidth(200);

        table.setColumnModel(columnModel);

}

}

});

  pop.add(modif = new JMenuItem("修改"));

  

JPanel panel2 = new JPanel();

Font font=new Font("宋体", Font.BOLD | Font.ITALIC, 18);

label = new JLabel("物品名称:");

label.setFont(font);

textField_1=new JTextField(30);

textField_1.setFont(font);

textField_1.addKeyListener(new KeyAdapter() {

@Override

public void keyPressed(KeyEvent e) {

// TODO 自动生成的方法存根

if(e.getKeyCode()==KeyEvent.VK_ENTER){

button.doClick();


super.keyPressed(e);

}

  }

});

panel2.add(label);

panel2.add(textField_1);

getContentPane().add(panel2, BorderLayout.NORTH);

JPanel panel = new JPanel();

Border border=BorderFactory.createTitledBorder("已添加种类一览");

panel.setBorder(border);

getContentPane().add(panel, BorderLayout.CENTER);

final JScrollPane scrollPane=new JScrollPane();

 scrollPane.setPreferredSize(new Dimension(360,200));

 panel.add(scrollPane);

result=getFileStates(DbUtil.selectTools());//调用方法从数据库中获取数据

model=new DefaultTableModel(result,COLUMN);//初始化模型

               table = new JTable();

table.setModel(model);//把模型绑定到表格

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);//设置表格大小改变自动变化模型

table.setGridColor(Color.red);//设置表格中网格线颜色

table.setRowHeight(30);//设置行高

table.setRowMargin(10);//设置行间距

table.setFont(new Font("宋体", Font.BOLD,18));//设置字体

DefaultTableCellRenderer cr=new DefaultTableCellRenderer();//设置单元格居中显示

cr.setHorizontalAlignment(SwingConstants.CENTER);

table.setDefaultRenderer(Object.class, cr);


JTableHeader tableHeader = table.getTableHeader();  

        tableHeader.setReorderingAllowed(false);//设置表格列不可移动  


        DefaultTableCellRenderer hr = (DefaultTableCellRenderer) tableHeader  

                .getDefaultRenderer();  

        hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);//列名居中 

        TableColumnModel columnModel=table.getColumnModel();//设置列宽

        TableColumn column = columnModel.getColumn(0);//默认各个列是等宽的

        column.setPreferredWidth(100);

        TableColumn column1 = columnModel.getColumn(1);

        column1.setPreferredWidth(200);

        table.setColumnModel(columnModel);

scrollPane.setViewportView(table);

table.addMouseListener(new MouseAdapter() {//给表格添加鼠标监听器


@Override

public void mousePressed(MouseEvent e) {//鼠标右击弹出菜单

// TODO 自动生成的方法存根

if(e.getButton()==MouseEvent.BUTTON3){

pop.show(table,e.getX(),e.getY());

}

super.mousePressed(e);

}

});

JPanel panel_1 = new JPanel();

getContentPane().add(panel_1, BorderLayout.SOUTH);

button = new JButton("添加");

button.setPreferredSize(new Dimension(120, 40));

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO 自动生成的方法存根

if(DbUtil.selectToolsName().contains(textField_1.getText())){

JOptionPane.showMessageDialog(null, "物料种类已存在!!!");

return;

}

int i=0;

i=DbUtil.addType(textField_1.getText());

if(i==1){

JOptionPane.showMessageDialog(null, "添加成功!!!");

doDefaultCloseAction();

}

}

});

panel_1.add(button);

JButton button_1 = new JButton("取消");

button_1.setPreferredSize(new Dimension(120, 40));

button_1.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO 自动生成的方法存根

doDefaultCloseAction();

}

});

panel_1.add(button_1);

setVisible(true);


}


}

   程序运行效果图

wKiom1gUoEvQlKbFAABW7Iyk79U234.png-wh_50

wKioL1gUoEuRC8wLAAA8y0U6ZvM305.png-wh_50