java web 怎么在jtable中添加按钮?

具体:JFramef=newJFrame();JTabletable=newJTable(data,show.fieldname);table.setPreferredS... 具体:

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();
我用这种方式显示了一张数据库中的表,怎么在每一行数据的末尾添加一个按钮?我想对按钮用监听来实现删除,修改操作
请各位帮帮忙啊。。。。
展开
 我来答
小傻

推荐于2016-02-20 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

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;
}
celin888888
2015-09-15 · 超过31用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:56.3万
展开全部
我这里有个以前的Jtable的例子,你可以看一下,有按钮,可以合并单元格

http://download.csdn.net/detail/celins7/3101135
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友00a90b4
推荐于2016-09-12 · TA获得超过239个赞
知道小有建树答主
回答量:455
采纳率:75%
帮助的人:174万
展开全部
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) {
//删除操作
}
}
}
});
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangchaojunooo
2011-11-14 · TA获得超过548个赞
知道小有建树答主
回答量:609
采纳率:0%
帮助的人:506万
展开全部
你的 DATA是个VECTOR吧 ,把BUTTON对象直接往里放就可以了,用ADDELEMENT方法,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yueqiulin
2011-11-14 · TA获得超过429个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:341万
展开全部
我晕,这怎么是WEB啊,不是SWING吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式