`
ansjsun
  • 浏览: 203776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
package ljsearchapp;

import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;

import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

public class Test1 extends JFrame {

    JTable t;

    public Test1() {
        setBounds(100, 100, 200, 200);
        JPanel pane = new JPanel();

        DefaultTableModel dm = new DefaultTableModel();
        dm.setDataVector(new Object[][]{{"Button 1", "foo"},
                    {"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"},{"Button 2", "bar"}},
                new Object[]{"Button", "String"});

        t = new JTable(dm);




        t.getColumn("Button").setCellRenderer(new ButtonRenderer());
        t.getColumn("Button").setCellEditor(new ButtonEditor(new JTextField()));

        pane.setLayout(new FlowLayout());
        pane.add(t);
        this.add(pane);
        setVisible(true);
    }
}

class ButtonEditor extends DefaultCellEditor {

    protected JButton button;
    private String label;
    private boolean isPushed;

    public ButtonEditor(JTextField checkBox) {
        super(checkBox);
        this.setClickCountToStart(1);
        button = new JButton();
        button.setOpaque(true);
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                fireEditingStopped();
            }
        });

    }

    public Component getTableCellEditorComponent(final 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);
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(table.getSelectedRow()) ;
                System.out.println(table.getSelectedColumn()) ;
            }
        });
        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();
    }

    @Override
    public boolean shouldSelectCell(EventObject anEvent) {
        System.out.println(1);
        return super.shouldSelectCell(anEvent);
    }
    
    
    public static void main(String[] args){
        Test1 test1 = new Test1() ;
    }
}

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("UIManager"));
        }
        setText((value == null) ? "" : value.toString());
        return this;
    }
}
分享到:
评论

相关推荐

    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 中放入多个按钮

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据表格。当我们需要在`JTable`中实现更复杂的交互,比如在一个单元格内放置多个按钮时,这通常涉及到自定义`TableCellRenderer`和`TableCellEditor`...

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

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

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

    组件(JButton,JLable...)继承相应的组件,并且implements TableCellRenderer,图片的方式是,将图片添加该组件中就可以了,具体方式是加入到重写的方法中.this.setIcon("path"),就可以了 3.设置Table的...

    实现JTable 数据的添加删除

    在开发GUI应用时,我们经常需要处理`JTable`中的数据,包括添加、删除和修改等操作。下面将详细介绍如何实现`JTable`数据的添加与删除。 ### 一、`JTable`的基本结构 `JTable`通常由三部分组成:`TableModel`、`...

    jtable中放多个Button.rar

    在Java的Swing库中,JTable是一种非常重要的组件,用于展示二维数据表格。而将多个Button放入JTable的同一单元格中,可以提供更丰富的交互性,这在某些复杂的应用场景下是必要的。本教程将详细介绍如何在JTable中...

    java中JTable的应用】.pdf

    Swing组件(如JFrame、JLabel、JTextField、JComboBox、JButton等)与JTable共同构成了复杂的用户界面。为了实现用户交互,Swing组件需要进行事件处理。在文档中出现的`ActionListener`接口表明了对用户动作(如点击...

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

    本文将详细介绍如何使用`JScrollPane`、`JTable`以及`DefaultTableModel`构建一个功能丰富的表格组件,实现数据的添加、删除、修改等功能。 #### 二、基础知识介绍 ##### 1. JTable简介 `JTable`是Swing提供的一个...

    JTable_JTree.rar_JTable Java_JTree JTable_jtree

    在实际应用中,`JTable`和`JTree`通常与其他Swing组件结合使用,如`JScrollPane`用于滚动,`JButton`用于触发操作,以及`JLabel`等用于提供上下文信息。通过熟练掌握这两个组件,开发者可以创建出功能强大的用户界面...

    jtable列中自定义button示例代码

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

    Java网吧计费_查询界面参考-JTable

    接下来,我们可以将JTable添加到一个JScrollPane中,以确保在数据量较大时能够正确滚动。这样可以避免界面过长导致的视觉不适: ```java JScrollPane scrollPane = new JScrollPane(table); ``` 为了实现查询功能...

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

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

    swing jtable 合并

    此外,`JTable`还可以与其他Swing组件结合使用,比如`JScrollPane`用于滚动,`JComboBox`作为下拉框选择列的值,`JButton`作为操作按钮等,这些都在`swing`目录下的其他文件中可能会有所涉及。 总的来说,`JTable`...

    JTable的实用小例子

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

    用于自己学习的文件,包括map容器的适用以及JTable组件

    在实际应用中,JTable通常与JFrame、JScrollPane、JButton等组件一起使用,构建功能丰富的桌面应用。 在"成员信息查看和调用"这个子文件中,我们可以推测可能包含了一个示例,演示如何使用Map存储成员信息(例如,...

    Java中基于自定义表格模型的表格实现方法研究.pdf

    该类中重新定义了构造方法、添加数据行的方法、删除数据行的方法、设置和读取单元格中数据的方法及获取表格中行数的方法等。 知识点四:自定义表格模型的优点 自定义表格模型可以大大方便了对表格中数据的操纵,...

    SWING导出excel.pdf

    在这个例子中,我们看到了`JFrame`、`JTable`、`JButton`和`JScrollPane`,这些都是Swing的组件。 2. **JTable**: `JTable`是用于显示和编辑表格数据的组件。在这个代码中,我们创建了一个`JTable`来显示数据,并且...

    java swing控件演示

    本演示主要关注Java Swing中的常见控件以及`JTable`的使用。 1. **Swing组件基础**: Swing组件基于Java AWT(Abstract Window Toolkit),但提供了更多的特性和更好的跨平台兼容性。Swing组件包括按钮(JButton)...

    PhotoShopDemo_java_窗口_JTableDemo_

    - 在JFrame中添加JTable,首先创建一个JTable实例,然后将它放入JScrollPane中,最后将JScrollPane添加到JFrame。 - 添加按钮和其他控件,可以通过add()方法将它们添加到JPanel或直接添加到JFrame。 - 设置布局...

Global site tag (gtag.js) - Google Analytics