高手來,如何在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(); } }} java Swing 右边新建目录,左边JTree目录刷新? jsp页面无法引用.class文件 JFileChooser乍么实现为模态对话框? Polynomial 实现 如果一个矿泉水价格为1.10元,我只有2元,下面代码是否正确 新年好,散分求答案。 如何得到java线程在操作系统中的ID? Oracle下处理中文的问题 散分300求解一个Swing组件的问题 菜鸟学java(三):大家请看下面的代码,怎么回事? 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();
}
}
}