RTRT,寫個例子給我,謝謝啊!!!!!!

解决方案 »

  1.   

    使用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();
    }
    }
    }
      

  2.   

    使用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();
    }
    }
    }