高手來,如何在jTable中加入一個jButton RTRT,寫個例子給我,謝謝啊!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 使用Table的CellRenderer和CellEditor实现。import java.awt.BorderLayout;import java.awt.Component;import java.awt.Dimension;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.JTable;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;import com.sunrising.nettest.gui.common.testparadialog.NetTestNumofVoIPCallsDlg;/** * @Title: NetTestVoIPCallCompoEditor * @Description: 组件编辑器 * @Project Name: NetTest * @Conpany: Sun Rising Software CO.,LTD. * @Author: gfl 2006-3-8 10:14:51 * @Copyright: Copyright (c) 2005-2006 * @Version: 1.0 * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */public class NetTestVoIPCallCompoEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { /* 单元格的Dialog */ private JDialog dialog; public TableCellRenderer renderer; private JButton actionButton; public String value; public JTable table; private JPanel panel = new JPanel(new BorderLayout()); /** * 构造函数 * * @param renderer * @param dialog * @param dialogType */ public NetTestVoIPCallCompoEditor(TableCellRenderer renderer, JDialog dialog, int row) { this.renderer = renderer; this.dialog = new JDialog(dialog, true); actionButton = new JButton("..."); actionButton.setPreferredSize(new Dimension(20, 20)); actionButton.addActionListener(this); actionButton.setFocusable(false); actionButton.setFocusPainted(false); actionButton.setMargin(new Insets(0, 0, 0, 0)); panel.add(actionButton, BorderLayout.EAST); } /** * @Function: getTableCellEditorComponent * @Descripton: CellEditor * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { this.value = value.toString(); this.table = table; panel.add(renderer.getTableCellRendererComponent(table, value, true, isSelected, row, column)); return panel; } /** * @Function: getCellEditorValue * @Descripton: 获得编辑的值 * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public Object getCellEditorValue() { return value; } /** * @Function: actionPerformed * @Descripton: * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public void actionPerformed(ActionEvent e) { if (e.getSource() == actionButton) { dialog.show(); } }} 使用Table的CellRenderer和CellEditor实现。import java.awt.BorderLayout;import java.awt.Component;import java.awt.Dimension;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JPanel;import javax.swing.JTable;import javax.swing.table.TableCellEditor;import javax.swing.table.TableCellRenderer;import com.sunrising.nettest.gui.common.testparadialog.NetTestNumofVoIPCallsDlg;/** * @Title: NetTestVoIPCallCompoEditor * @Description: 组件编辑器 * @Project Name: NetTest * @Conpany: Sun Rising Software CO.,LTD. * @Author: gfl 2006-3-8 10:14:51 * @Copyright: Copyright (c) 2005-2006 * @Version: 1.0 * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */public class NetTestVoIPCallCompoEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { /* 单元格的Dialog */ private JDialog dialog; public TableCellRenderer renderer; private JButton actionButton; public String value; public JTable table; private JPanel panel = new JPanel(new BorderLayout()); /** * 构造函数 * * @param renderer * @param dialog * @param dialogType */ public NetTestVoIPCallCompoEditor(TableCellRenderer renderer, JDialog dialog, int row) { this.renderer = renderer; this.dialog = new JDialog(dialog, true); actionButton = new JButton("..."); actionButton.setPreferredSize(new Dimension(20, 20)); actionButton.addActionListener(this); actionButton.setFocusable(false); actionButton.setFocusPainted(false); actionButton.setMargin(new Insets(0, 0, 0, 0)); panel.add(actionButton, BorderLayout.EAST); } /** * @Function: getTableCellEditorComponent * @Descripton: CellEditor * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { this.value = value.toString(); this.table = table; panel.add(renderer.getTableCellRendererComponent(table, value, true, isSelected, row, column)); return panel; } /** * @Function: getCellEditorValue * @Descripton: 获得编辑的值 * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public Object getCellEditorValue() { return value; } /** * @Function: actionPerformed * @Descripton: * @Modify History : Date:2006-3-8 Author: gfl * @Modification Description : */ public void actionPerformed(ActionEvent e) { if (e.getSource() == actionButton) { dialog.show(); } }} 发个恒生电子的坑爹笔试题,我猜90%的人会答错,不信你试试 怎么获取返回数据呢? jsp 纵向和横向都只能选择一个 字符串处理问题 请高人指点 error是系统的,既然用户不用,为什么还要在API里写出此类等等 J2EE与J2ME哪个更难? 主从表,一对多,如何设计object来表示一条记录? 各位大哥,帮忙分析一下哪里不对? 在线等,如果解决放分500! JBuilder中提供了rmic的工具吗? java基础题 Java怎么对基本类型传引用啊?
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;import com.sunrising.nettest.gui.common.testparadialog.NetTestNumofVoIPCallsDlg;/**
* @Title: NetTestVoIPCallCompoEditor
* @Description: 组件编辑器
* @Project Name: NetTest
* @Conpany: Sun Rising Software CO.,LTD.
* @Author: gfl 2006-3-8 10:14:51
* @Copyright: Copyright (c) 2005-2006
* @Version: 1.0
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public class NetTestVoIPCallCompoEditor extends AbstractCellEditor implements
TableCellEditor, ActionListener {
/* 单元格的Dialog */
private JDialog dialog; public TableCellRenderer renderer;
private JButton actionButton; public String value;
public JTable table; private JPanel panel = new JPanel(new BorderLayout()); /**
* 构造函数
*
* @param renderer
* @param dialog
* @param dialogType
*/
public NetTestVoIPCallCompoEditor(TableCellRenderer renderer, JDialog dialog,
int row) {
this.renderer = renderer; this.dialog = new JDialog(dialog, true); actionButton = new JButton("...");
actionButton.setPreferredSize(new Dimension(20, 20));
actionButton.addActionListener(this);
actionButton.setFocusable(false);
actionButton.setFocusPainted(false);
actionButton.setMargin(new Insets(0, 0, 0, 0));
panel.add(actionButton, BorderLayout.EAST);
} /**
* @Function: getTableCellEditorComponent
* @Descripton: CellEditor
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
this.value = value.toString();
this.table = table;
panel.add(renderer.getTableCellRendererComponent(table, value, true,
isSelected, row, column));
return panel;
} /**
* @Function: getCellEditorValue
* @Descripton: 获得编辑的值
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public Object getCellEditorValue() {
return value;
} /**
* @Function: actionPerformed
* @Descripton:
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == actionButton) {
dialog.show();
}
}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;import com.sunrising.nettest.gui.common.testparadialog.NetTestNumofVoIPCallsDlg;/**
* @Title: NetTestVoIPCallCompoEditor
* @Description: 组件编辑器
* @Project Name: NetTest
* @Conpany: Sun Rising Software CO.,LTD.
* @Author: gfl 2006-3-8 10:14:51
* @Copyright: Copyright (c) 2005-2006
* @Version: 1.0
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public class NetTestVoIPCallCompoEditor extends AbstractCellEditor implements
TableCellEditor, ActionListener {
/* 单元格的Dialog */
private JDialog dialog; public TableCellRenderer renderer;
private JButton actionButton; public String value;
public JTable table; private JPanel panel = new JPanel(new BorderLayout()); /**
* 构造函数
*
* @param renderer
* @param dialog
* @param dialogType
*/
public NetTestVoIPCallCompoEditor(TableCellRenderer renderer, JDialog dialog,
int row) {
this.renderer = renderer; this.dialog = new JDialog(dialog, true); actionButton = new JButton("...");
actionButton.setPreferredSize(new Dimension(20, 20));
actionButton.addActionListener(this);
actionButton.setFocusable(false);
actionButton.setFocusPainted(false);
actionButton.setMargin(new Insets(0, 0, 0, 0));
panel.add(actionButton, BorderLayout.EAST);
} /**
* @Function: getTableCellEditorComponent
* @Descripton: CellEditor
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
this.value = value.toString();
this.table = table;
panel.add(renderer.getTableCellRendererComponent(table, value, true,
isSelected, row, column));
return panel;
} /**
* @Function: getCellEditorValue
* @Descripton: 获得编辑的值
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public Object getCellEditorValue() {
return value;
} /**
* @Function: actionPerformed
* @Descripton:
* @Modify History : Date:2006-3-8 Author: gfl
* @Modification Description :
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() == actionButton) {
dialog.show();
}
}
}