java web 怎么在jtable中添加按钮?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web 怎么在jtable中添加按钮?相关的知识,希望对你有一定的参考价值。
具体:
JFrame f=new JFrame();
JTable table=new JTable(data,show.fieldname);
table.setPreferredScrollableViewportSize(new Dimension(550,tableheight*14));
JScrollPane scrollPane=new JScrollPane(table);
f.getContentPane().add(scrollPane,BorderLayout.CENTER);
f.setTitle(tablename+"表的信息");
f.pack();
f.show();
我用这种方式显示了一张数据库中的表,怎么在每一行数据的末尾添加一个按钮?我想对按钮用监听来实现删除,修改操作
请各位帮帮忙啊。。。。
java web在jtable中添加按钮的示例如下:
import java.awt.BorderLayout;import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
public class JTableButton extends JPanel
private JTable table;
private JScrollPane scrollPane;
private JButton[] buttons;
private String path = System.getProperty("user.dir") + File.separator
+ "images" + File.separator;
public JTableButton()
setBorder(BorderFactory.createLineBorder(Color.red, 1));
init();
private void init()
String headName[] = "Name", "age", "sex", "adress", "image" ;
buttons = new JButton[5];
for(int i=0;i<buttons.length;i++)
buttons[i] = new JButton(""+i);
Object obj[][] =
"LiMing", 23, Boolean.TRUE, buttons[0],
new ImageIcon(path + "icon.png") ,
"ZhangSan", 25, Boolean.TRUE,buttons[1],
new ImageIcon(path + "icon.png") ,
"WangWu", 21, Boolean.FALSE, buttons[2],
new ImageIcon(path + "icon.png") ,
"LiSi", 28, Boolean.TRUE, buttons[3],
new ImageIcon(path + "icon.png") ,
"LuBo", 20, Boolean.FALSE, buttons[4],
new ImageIcon(path + "icon.png") , ;
table = new JTable(new MyTableModel(headName,obj));
table.setDefaultRenderer(JButton.class, new ComboBoxCellRenderer());
scrollPane = new JScrollPane(table);
setLayout(new BorderLayout());
add(scrollPane, BorderLayout.CENTER);
addHandler();
private void addHandler()
//添加事件
table.addMouseListener(new MouseAdapter()
public void mouseClicked(MouseEvent e)
System.out.println("table");
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
System.out.println("row="+row+":"+"column="+column);
if(column==3)
//处理button事件写在这里...
System.out.println(((JButton)table.getValueAt(row, column)).getText());
);
public static void main(String[] args)
JFrame frame = new JFrame();
frame.add(new JTableButton());
frame.setSize(new Dimension(800, 400));
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
class MyTableModel extends AbstractTableModel
private String headName[];
private Object obj[][];
public MyTableModel()
super();
public MyTableModel(String[] headName, Object[][] obj)
this();
this.headName = headName;
this.obj = obj;
public int getColumnCount()
return headName.length;
public int getRowCount()
return obj.length;
public Object getValueAt(int r, int c)
return obj[r][c];
public String getColumnName(int c)
return headName[c];
public Class<?> getColumnClass(int columnIndex)
return obj[0][columnIndex].getClass();
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
if (columnIndex == 3 || columnIndex == 4)
return false;
return true;
class ComboBoxCellRenderer implements TableCellRenderer
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
JButton cmb = (JButton) value;
if (isSelected)
cmb.setForeground(table.getSelectionForeground());
cmb.setBackground(table.getSelectionBackground());
else
cmb
.setForeground((unselectedForeground != null) ? unselectedForeground
: table.getForeground());
cmb
.setBackground((unselectedBackground != null) ? unselectedBackground
: table.getBackground());
cmb.setFont(table.getFont());
if (hasFocus)
cmb
.setBorder(UIManager
.getBorder("Table.focusCellHighlightBorder"));
if (!isSelected && table.isCellEditable(row, column))
Color col;
col = UIManager.getColor("Table.focusCellForeground");
if (col != null)
cmb.setForeground(col);
col = UIManager.getColor("Table.focusCellBackground");
if (col != null)
cmb.setBackground(col);
else
cmb.setBorder(noFocusBorder);
return cmb;
protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
private Color unselectedForeground;
private Color unselectedBackground;
参考技术A 我这里有个以前的Jtable的例子,你可以看一下,有按钮,可以合并单元格
http://download.csdn.net/detail/celins7/3101135 参考技术B TableColumn tableColumn = table.getColumn("数量");
JButton jb = new JJButton();
tableColumn.setCellEditor(new DefaultCellEditor(jb));
然后对这个按钮添加监听事件就可以了。
我下面这个是对于combobox控件的,你换成jbutton的监听事件就可以了吧
comboBox.addItemListener(new ItemListener()
public void itemStateChanged(ItemEvent e)
if (e.getStateChange() == ItemEvent.SELECTED)
int row = jTable.getSelectedRow();
int column = jTable.getSelectedColumn();
if (jTable.getValueAt(row, column) != null)
//删除操作
);本回答被提问者采纳 参考技术C 你的 DATA是个VECTOR吧 ,把BUTTON对象直接往里放就可以了,用ADDELEMENT方法, 参考技术D 我晕,这怎么是WEB啊,不是SWING吗?
以上是关于java web 怎么在jtable中添加按钮?的主要内容,如果未能解决你的问题,请参考以下文章