java 按钮 表格_java 表格中带按钮的方法

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Vector;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableCellRenderer;

import NETSOURCE.SearchPanel;

import NETSOURCE.SearchPanel.ButtonEditor;

import NETSOURCE.SearchPanel.ButtonRenderer;

public class ManageStoredData extends JPanel{

private DefaultTableModel tableModel;

private JTable table;

private final int columnWithoutButton = 5;

public ManageStoredData() {

setLayout(null);

this.setBackground(Color.pink);

final JScrollPane scrollPane = new JScrollPane();

scrollPane.setAutoscrolls(true);

tableModel = new DefaultTableModel() {

// 设置列能否编辑

public boolean isCellEditable(int row, int column) {

if (column == 4 || column == 5 )

return true;

return false;

}

};

String headName[] = { "序号", "文件名", "文件大小", "修改日期",

"导出", "删除"};

tableModel.setColumnIdentifiers(headName);

table = new JTable(tableModel);

table.getColumn("导出").setCellRenderer(new ButtonRenderer());

table.getColumn("导出").setCellEditor(new ButtonEditor(new JCheckBox()));

table.getColumn("删除").setCellRenderer(new ButtonRenderer());

table.getColumn("删除").setCellEditor(new ButtonEditor(new JCheckBox()));

// 设置列标题不能移动

//  table.getTableHeader().setReorderingAllowed(false);

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

scrollPane.setViewportView(table);

// 设置列宽,并且当调整Panel时列宽也能相应的变化

table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

//  table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  //若设置它,列宽永远固定

table.getColumnModel().getColumn(0).setPreferredWidth(30);

table.getColumnModel().getColumn(1).setPreferredWidth(120);

table.getColumnModel().getColumn(2).setPreferredWidth(80);

table.getColumnModel().getColumn(3).setPreferredWidth(80);

table.getColumnModel().getColumn(4).setPreferredWidth(70);

table.getColumnModel().getColumn(5).setPreferredWidth(70);

// 设置行高

table.setRowHeight(25);

scrollPane.setBounds(80, 20, 500, 125);

this.add(scrollPane);

setVisible(true);

InitValue();

}

private void InitValue() {

for(int i=0;i<5;i++){

Vector vector=new Vector();

vector.addElement("1");

vector.addElement("Open Close Msg");

vector.addElement("do");

vector.addElement("2");

vector.addElement("导出");

vector.addElement("删除");

tableModel.getDataVector().add(vector);

}

}

public class ButtonRenderer extends JButton implements TableCellRenderer {

public ButtonRenderer() {

setOpaque(true);

}

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected, boolean hasFocus, int row,

int column) {

if (isSelected) {

setForeground(table.getSelectionForeground());

setBackground(table.getSelectionBackground());

} else {

setForeground(table.getForeground());

setBackground(UIManager.getColor("Button.background"));

}

setText((value == null) ? "" : value.toString());

return this;

}

}

public class ButtonEditor extends DefaultCellEditor {

protected JButton button;

public ButtonEditor(JCheckBox checkBox) {

super(checkBox);

button = new JButton();

button.setOpaque(true);

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent arg0) {

ButtonClick();

}

});

}

@Override

public Component getTableCellEditorComponent(JTable table1,

Object value, boolean isSelected, int row, int column) {

if (isSelected) {

System.out.println("change column");

button.setForeground(table.getSelectionForeground());

button.setBackground(table.getSelectionBackground());

} else {

System.out.println("change row");

button.setForeground(table.getForeground());

button.setBackground(table.getBackground());

}

button.setText(table1.getValueAt(row, column).toString());

return button;

}

//若缺少此方法,点击按钮后将获取不到Button的Text值,将会显示false.

@Override

public Object getCellEditorValue(){

return button.getText();

}

protected void ButtonClick() {

// TODO Auto-generated method stub

System.out.println("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");

System.out.println(table.getSelectedColumn() + " and  "      + table.getSelectedRow());   }  } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值