添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 删除选中行的数据(删除一行,删除多行)
  • 获取表格选中行数据(获取选中的一行或多行数据,并显示在文本域中)
  • 设置JTable的某一列单元格编辑时为使用JComboBox(并设置双击单元格才启用JComboBox,默认单击使用)
  • public class TableDemo1 extends JFrame {
    	private JPanel contentPane;
    	private JTable table;
    	private DefaultTableModel tableModel;
    	private JTextArea textArea;
    	private String[] column=new String[] {"编号", "姓名", "职位", "领导", "入职", "工资", "提成", "部门"};
    	 * Launch the application.
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					TableDemo1 frame = new TableDemo1();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    	 * Create the frame.
    	public TableDemo1() {
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 600, 450);
    		this.setLocationRelativeTo(null);
    		this.setResizable(false);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		JPanel panel = new JPanel();
    		panel.setBounds(60, 15, 465, 25);
    		contentPane.add(panel);
    		panel.setLayout(new GridLayout(0, 4, 50, 0));
    		JButton setBtn = new JButton("赋值");
    		setBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				setData();
    		panel.add(setBtn);
    		JButton addBtn = new JButton("增加");
    		addBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				addData();
    		panel.add(addBtn);
    		JButton deleteBtn = new JButton("删除");
    		deleteBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				deleteData();
    		panel.add(deleteBtn);
    		JButton getBtn = new JButton("取值");
    		getBtn.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				getData();
    		panel.add(getBtn);
    		JScrollPane scrollPane = new JScrollPane();
    		scrollPane.setBounds(60, 150, 468, 243);
    		contentPane.add(scrollPane);
    		table = new JTable();
    		table.setModel(new DefaultTableModel(
    			new Object[][] {
    				{null, null, null, null, null, null, null, null},
    				{null, null, null, null, null, null, null, null},
    				{null, null, null, null, null, null, null, null},
    			column
    		scrollPane.setViewportView(table);
    	    tableModel=(DefaultTableModel) table.getModel();    //获得表格模型
    //	    tableModel.setRowCount(0);    //清空表格中的数据
    	    table.setModel(tableModel);
    	    textArea = new JTextArea();
    	    JScrollPane scroll=new JScrollPane(textArea);
    	    scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    	    scroll.setBounds(60, 56, 465, 76);
    	    contentPane.add(scroll);
    	    //设置JTable的某一列单元格编辑时使用JComboBox:
    		String[] items = { "选项1", "选项2", "选项3", "选项4" };
            JComboBox editor = new JComboBox( items );
            DefaultCellEditor dce = new DefaultCellEditor(editor);
            dce.setClickCountToStart(2);//双击时才能使用JComboBox
            table.getColumnModel().getColumn(2).setCellEditor(dce);//设置在表格的第三列
            this.style();
    	//赋值(填充数据:给单元格赋值或使用二维数组直接设置表格数据)
    	public void setData() {
    		Object[][] datas=new Object[3][column.length];
    		for(int i=0;i<3;i++) {
    			for(int j=0;j<8;j++) {
    				table.setValueAt(i+""+j,i, j);//给单元格赋值
    				datas[i][j]=i+""+j;
    //		table.setModel(new DefaultTableModel(datas,column));//使用二维数组设置表格数据
    //		tableModel=(DefaultTableModel) table.getModel();//使用二维数组设置表格数据后更新tableModel
    	public void addData() {
    		tableModel.setRowCount(tableModel.getRowCount()+1);//增加空行,手动编辑赋值
    		//直接增加一行数据:
    //			tableModel.addRow(new Object[] {123, "张三", "程序员", 7839, new Date(), 345.67, 234, 20});
    		table.setModel(tableModel);
    	public void deleteData()
    		tableModel=(DefaultTableModel) table.getModel();
    	    int[] selectedRows=table.getSelectedRows();
    	    for(int i=0;i<selectedRows.length;i++)
    	    	tableModel.removeRow(selectedRows[0]);//不是selectedRows[i]
    	    table.setModel(tableModel);
    	public void getData() {
    		int[] rows=table.getSelectedRows();
    		Object[][] objects= new Object[rows.length][8];
    		for(int i=0;i<rows.length;i++) {
    			for(int j=0;j<8;j++) {
    				objects[i][j]=table.getValueAt(rows[i], j);//注意是rows[i],不是i
    		for(int i=0;i<objects.length;i++){
                for(int j=0;j<objects[i].length;j++){
                    textArea.insert(objects[i][j]+" ",textArea.getDocument().getLength());
                textArea.insert("\n",textArea.getDocument().getLength());
    	//设置表格样式
    	public void style() {
    		table.setFont(new Font("微软雅黑", Font.PLAIN, 20));
    		table.setForeground(Color.blue);	//颜色
    		table.setRowHeight(30);//设置行高
    		JTableHeader tableHeader = table.getTableHeader();//表头
    		tableHeader.setPreferredSize(new Dimension(tableHeader.getWidth(),30));//设置表头行高
    		tableHeader.setFont(new Font("微软雅黑", Font.PLAIN, 20));
    		tableHeader.setForeground(Color.blue);