`
<冫茖>
  • 浏览: 36758 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JTable单元格添加按钮

阅读更多

 效果如如下:

 JButtonCell

 

代码:


// File: JButtonTableExample.java
/* (swing1.1beta3) */
//package jp.gr.java_conf.tame.swing.examples;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

import jp.gr.java_conf.tame.swing.table.*;


/**
 * @version 1.0 11/09/98
 */
public class JButtonTableExample extends JFrame {

  public JButtonTableExample(){
    super( "JButtonTable Example" );
    
    DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(new Object[][]{{"button 1","foo"},
                                    {"button 2","bar"}},
                     new Object[]{"Button","String"});
                     
    JTable table = new JTable(dm);
    table.getColumn("Button").setCellRenderer(new ButtonRenderer());
    table.getColumn("Button").setCellEditor(new ButtonEditor(new JCheckBox()));
    JScrollPane scroll = new JScrollPane(table);
    getContentPane().add( scroll );
    setSize( 400, 100 );
    setVisible(true);
  }

  public static void main(String[] args) {
    JButtonTableExample frame = new JButtonTableExample();
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }
}





// File: ButtonRenderer.java
/* (swing1.1beta3) */

package jp.gr.java_conf.tame.swing.table;

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

/**
 * @version 1.0 11/09/98
 */
public class ButtonRenderer extends JButton implements TableCellRenderer {

  public ButtonRenderer() {
    setOpaque(true);
  }
  
  public Component getTableCellRendererComponent(JTable table, Object value,
                   boolean isSelected, boolean hasFocus, int row, int column) {
    if (isSelected) {
      setForeground(table.getSelectionForeground());
      setBackground(table.getSelectionBackground());
    } else{
      setForeground(table.getForeground());
      setBackground(UIManager.getColor("Button.background"));
    }
    setText( (value ==null) ? "" : value.toString() );
    return this;
  }
}





// File: ButtonEditor.java
/* (swing1.1beta3) */

package jp.gr.java_conf.tame.swing.table;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

/**
 * @version 1.0 11/09/98
 */
public class ButtonEditor extends DefaultCellEditor {
  protected JButton button;
  private String    label;
  private boolean   isPushed;

  public ButtonEditor(JCheckBox checkBox) {
    super(checkBox);
    button = new JButton();
    button.setOpaque(true);
    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        fireEditingStopped();
      }
    });
  }

  public Component getTableCellEditorComponent(JTable table, Object value,
                   boolean isSelected, int row, int column) {
    if (isSelected) {
      button.setForeground(table.getSelectionForeground());
      button.setBackground(table.getSelectionBackground());
    } else{
      button.setForeground(table.getForeground());
      button.setBackground(table.getBackground());
    }
    label = (value ==null) ? "" : value.toString();
    button.setText( label );
    isPushed = true;
    return button;
  }

  public Object getCellEditorValue() {
    if (isPushed)  {
      // 
      // 
      JOptionPane.showMessageDialog(button ,label + ": Ouch!");
      // System.out.println(label + ": Ouch!");
    }
    isPushed = false;
    return new String( label ) ;
  }
  
  public boolean stopCellEditing() {
    isPushed = false;
    return super.stopCellEditing();
  }

  protected void fireEditingStopped() {
    super.fireEditingStopped();
  }
}
分享到:
评论

相关推荐

    Jtable 中放入多个按钮

    - 确保在添加按钮时考虑到单元格的大小,可能需要自定义单元格的宽度和高度。 - 考虑到性能问题,避免在`getTableCellRendererComponent`方法中进行耗时的操作,因为此方法会被频繁调用。 - 如果单元格需要可编辑...

    JTable表格单元加按钮,并且响应点击事件Demo.rar

    用改写 DefaultCellEditor 和 TableCellRenderer的方法实现,主要代码: table.getColumnModel().getColumn(2).setCellEditor(new MyButtonEditor()); table.getColumnModel().getColumn(2).setCellRenderer...

    Java Swing实现JTable检测单元格数据变更事件的方法示例

    Java Swing 实现 JTable 检测单元格数据变更事件的方法示例 Java Swing 中的 JTable 是一个功能强大且灵活的表格组件,广泛应用于各种桌面应用程序中。然而,在实际开发中,我们经常需要检测单元格数据的变更事件...

    如何在JTable的单元格里添加图片,Button组件,Label组件等等组件

    添加组件后,在组件上添加图片 1.设置Table的Model这个需要重写AbstractTableModel类, 2.设置Table的DefaultRenderer,这个根据个人需要选择将要添加到Table的cell里的 组件(JButton,JLable...)继承相应的组件...

    jtable中放多个Button.rar

    创建一个类,继承自`DefaultTableCellRenderer`,并在其中添加按钮。例如: ```java public class ButtonCellRenderer extends DefaultTableCellRenderer { private JPanel panel; private JButton[] buttons; ...

    JTable 操作单元格 行 列

    本篇文章将深入探讨`JTable`如何操作单元格、行和列,以帮助你更好地理解和运用这一功能强大的组件。 ### 单元格操作 1. **创建和设置单元格值**:`JTable`中的每个单元格都由一个`DefaultTableModel`管理。你可以...

    Swing中JTABLE中添加JBUTTON控件

    将`JButton`添加到`JTable`中可以为用户提供更丰富的交互体验,例如编辑、删除或自定义操作。本文将详细讲解如何在`JTable`中添加`JButton`控件,并探讨其可能的拓展应用。 首先,我们需要理解`JTable`的基本结构。...

    使用 AbstractTableModel 构建Table 在表格中添加JButton按钮

    使用 AbstractTableModel 构建Table 在表格中添加JButton按钮,之前在网上找了2天没有找到好用的程序,最终终于找到一个好用的例子。 不要使,我退你们分。。 sing the Swing JTable class can quickly become a ...

    Jtable中加入复选框的两种方法

    JTable中加入复选框的两种方法 在Java中,JTable是一个常用的表格控件,用于显示和编辑表格...通过使用CheckBoxRenderer类和CheckButtonEditor类,我们可以轻松地将复选框添加到JTable中,并实现复杂的表格编辑功能。

    JTable 练习例子exa

    在实际使用中,`JTable`提供了丰富的功能,如排序、选择、编辑单元格等。可以通过设置列的`ColumnModel`来控制列的宽度、是否可编辑等属性。另外,`JTable`可以与`JComboBox`、`JCheckBox`等其他组件集成,实现复杂...

    Jtable数据查询与界面跳转

    `JTable`不仅提供了一个美观的界面来展示数据,还允许用户进行交互,如选择行、编辑单元格以及执行数据查询等操作。本教程将深入探讨如何在`JTable`中实现数据查询以及如何根据用户的查询结果进行界面跳转。 首先,...

    java表格jtable源码

    在JTable中,可以使用`CellEditor`实现单元格的下拉选项。创建一个`DefaultCellEditor`,并传入`ComboBox`实例,然后将其设置为特定列的编辑器。 6. **保存表格数据** 为了保存表格数据,可以遍历`TableModel`,...

    学会用JScrollPane和Jtable以及table的Defaulttablemodel*

    它提供了添加行、列和单元格数据的方法,非常适合用于需要频繁更新数据的应用场景。 ##### 3. JScrollPane `JScrollPane`是一个可以滚动的面板,当表格内容较多时,使用`JScrollPane`可以实现滚动浏览的功能,避免...

    jtable列中自定义button示例代码

    有时,我们可能需要在JTable的某一列中添加自定义的按钮,以便为用户提供更多的交互功能。本篇将详细介绍如何在JTable列中自定义Button,并提供一个实际的示例代码。 首先,我们需要了解JTable的基本结构。JTable由...

    Jtable_同一表格内实现增删改查.rar

    除了基本操作,你可能还需要实现事件监听器,如MouseListener或KeyListener,以便响应用户的交互操作,例如点击“添加”、“删除”或“保存”按钮。同时,为了保持数据的一致性,事务管理是必要的,尤其是在进行多条...

    swing jtable 合并

    `Swing之JTable详解.doc`可能包含了`JTable`的基本用法、构造函数、方法以及如何添加、删除和修改表格数据等内容。`2.高级Swing组件JTable应用.doc`可能进一步讨论了`JTable`的高级特性,如排序、过滤、拖放操作,...

    java中JTable的应用】[参照].pdf

    `JTable` 是Java Swing中的一个组件,它允许用户在窗口中展示表格数据,并支持交互操作,如选择、排序和编辑单元格。`JTable` 可以动态地调整大小以适应内容,并且可以与其他组件(如`JScrollPane`)一起使用以滚动...

    JTable的实用小例子

    本示例主要展示了如何使用 Java Swing 中的 `JTable` 组件来实现一个简单的表格应用,包括如何添加、删除数据等基本操作。这对于初学者来说是非常有用的参考资料。 #### 二、代码解析 ##### 1. 导入必要的包 ```...

    JTable设置行背景颜色及实现打印功能的示例代码.doc

    在示例代码中,创建了一个 `JButton` 并添加了一个监听器,当用户点击“Print”按钮时,会调用 `JTable` 的 `print()` 方法来打印当前表格。 ```java JButton printButton = new JButton("Print"); printButton....

    java中JTable的应用】[归类].pdf

    `ActionPerformed` 方法处理用户触发的事件,比如点击按钮来执行添加或删除操作。 在实际应用中,`JTable`通常结合`JDBC`用于展示数据库中的数据。例如,你可能首先从数据库中查询所有学生信息,然后将这些数据加载...

Global site tag (gtag.js) - Google Analytics