`
kalllx
  • 浏览: 63374 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jtable

 
阅读更多
package swing;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

/*
 * The editor button that brings up the dialog.
 */
//public class TablePopupEditor extends AbstractCellEditor
public class TablePopupEditor extends DefaultCellEditor
    implements TableCellEditor
{
  //  private PopupDialog popup;
    private String currentText = "";
    private JButton editorComponent;

    public TablePopupEditor()
    {
        super(new JTextField());

      //  setClickCountToStart(2);

        //  Use a JButton as the editor component

        editorComponent = new JButton();
        //editorComponent.setBackground(Color.white);
       // editorComponent.setBorderPainted(false);
       // editorComponent.setContentAreaFilled( false );

        //  Set up the dialog where we do the actual editing

       
    }

    public Object getCellEditorValue()
    {
       return new JButton("akata");
	//return currentText;
    }

    public Component getTableCellEditorComponent(
        JTable table, Object value, boolean isSelected, int row, int column)
    {

        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                System.out.println("run");
                PopupDialog  popup = new PopupDialog();
                popup.setText( currentText );
//              popup.setLocationRelativeTo( editorComponent );
                Point p = editorComponent.getLocationOnScreen();
                popup.setLocation(p.x, p.y + editorComponent.getSize().height);
                popup.show();
                fireEditingStopped();
            }
        });

        currentText = value.toString();
        editorComponent.setText( currentText );
        return editorComponent;
    }

    /*
    *   Simple dialog containing the actual editing component
    */
    class PopupDialog extends JDialog implements ActionListener
    {
        private JTextArea textArea;

        public PopupDialog()
        {
            super((Frame)null, "Change Description", false);

            textArea = new JTextArea(5, 20);
            textArea.setLineWrap( true );
            textArea.setWrapStyleWord( true );
            KeyStroke keyStroke = KeyStroke.getKeyStroke("ENTER");
            textArea.getInputMap().put(keyStroke, "none");
            JScrollPane scrollPane = new JScrollPane( textArea );
            getContentPane().add( scrollPane );

            JButton cancel = new JButton("Cancel");
            cancel.addActionListener( this );
            JButton ok = new JButton("Ok");
            ok.setPreferredSize( cancel.getPreferredSize() );
            ok.addActionListener( this );

            JPanel buttons = new JPanel();
            buttons.add( ok );
            buttons.add( cancel );
            getContentPane().add(buttons, BorderLayout.SOUTH);
            pack();

            getRootPane().setDefaultButton( ok );
        }

        public void setText(String text)
        {
            textArea.setText( text );
        }

        /*
        *   Save the changed text before hiding the popup
        */
        public void actionPerformed(ActionEvent e)
        {
            if ("Ok".equals( e.getActionCommand() ) )
            {
                currentText = textArea.getText();
            }

            textArea.requestFocusInWindow();
            setVisible( false );
        }
    }

    public static void main(String[] args)
    {
        String[] columnNames = {"Item", "Description"};
        Object[][] data =
        {
            {"Item 1", "Description of Item 1"},
            {"Item 2", "Description of Item 2"},
            {"Item 3", "Description of Item 3"}
        };

        JTable table = new JTable(data, columnNames);
        RowSorter sorter = new TableRowSorter(table.getModel());
        table.setRowSorter(sorter);
        table.getColumnModel().getColumn(1).setPreferredWidth(300);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);

        // Use the popup editor on the second column

        TablePopupEditor popupEditor = new TablePopupEditor();
        table.getColumnModel().getColumn(1).setCellEditor( popupEditor );

        JFrame frame = new JFrame("Popup Editor Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add( scrollPane );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }
}

 

分享到:
评论

相关推荐

    JTable动态刷新数据

    JTable 动态刷新数据 JTable 动态刷新数据是指在 Java Swing 应用程序中,使用 JTable 组件展示数据,并实时更新数据的过程。这种技术在很多实际应用场景中非常有用,如股票交易平台、实时监控系统、电子表格等。 ...

    java 中 Jtable的用法

    ### Java中的JTable用法详解 #### 一、概述 JTable是Swing框架中用于显示和编辑表格数据的关键组件之一。它不仅提供了强大的数据管理功能,还支持丰富的定制选项,使得开发者能够根据具体需求创建出高度个性化的...

    Java JTree+JTable应用

    在Java Swing库中,`JTree`和`JTable`是两种非常重要的组件,用于创建用户界面。`JTree`通常用于展示层次化的数据结构,而`JTable`则适用于二维表格数据的显示和操作。本项目是关于如何在Java应用程序中结合使用这两...

    JTable 操作单元格 行 列

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示二维数据。它是基于模型-视图-控制器(MVC)架构设计的,使得数据操作变得灵活且易于管理。本篇文章将深入探讨`JTable`如何操作单元格、行...

    JTable

    JTable的显示效果

    JAVA表格控件JTable常用操作详解.doc

    【Java表格控件JTable详解】 在Java Swing编程中,JTable是一个不可或缺的组件,用于展示二维数据并允许用户进行交互。它提供了丰富的功能,包括数据的显示、编辑以及对行和列的操作。以下是对JTable常用操作的详细...

    JTable实现行间拖拽的最简单方法

    在Java Swing应用中,`JTable`是一种常用的组件,用于展示和操作二维数据。它提供了丰富的功能,如排序、选择和编辑。然而,`JTable`默认并不支持行间的拖放(Drag and Drop, DnD)操作。本文将详细介绍如何通过一种...

    JAVA JTREE JTABLE实例代码

    在Java Swing库中,JTree和JTable是两个非常重要的组件,它们被广泛用于构建用户界面,特别是处理数据展示和交互。JTree用于显示层次结构的数据,而JTable则适用于二维表格形式的数据展现。 首先,我们来深入了解...

    JTable (动态添加数据)

    在Java编程中,`JTable`是Swing组件的一部分,用于在GUI中展示二维表格数据。这个场景中,我们探讨的是如何使用JavaBean来动态地向`JTable`添加数据,并将这些数据保存到Sql Server数据库,然后在`JTable`中显示。...

    Excel内容复制到JTable中

    在Java Swing应用中,JTable是一个非常常用的组件,用于显示和操作二维表格数据。当我们需要从Excel文件中读取数据并展示在JTable上时,就需要进行一系列的处理步骤。以下是一些关于如何实现这个过程的关键知识点: ...

    复杂JTable-跨列表头

    在Java Swing库中,JTable是一个非常重要的组件,用于显示和操作二维数据集。这个组件在用户界面设计中广泛使用,因为它提供了丰富的交互性,包括排序、选择和编辑表格数据。"复杂JTable-跨列表头"是一个特殊实现,...

    JTable数据库基本操作多行增删改查

    JTable 数据库基本操作多行增删改查 JTable 是 Java 中一个常用的表格控件,用于显示和编辑表格数据。在 JTable 中,数据是通过TableModel 来管理的。下面将详细介绍 JTable 数据库基本操作多行增删改查的知识点。 ...

    jtable选中需要修改的行

    在Java Swing应用中,JTable是一个非常常用的组件,用于显示和编辑二维表格数据。当我们需要在JTable中实现用户交互,比如选中某一行并进行编辑时,通常会涉及到几个关键概念和技术。以下是对这些知识点的详细解释:...

    Jtable 中放入多个按钮

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

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

    JTable中加入复选框的两种方法 在Java中,JTable是一个常用的表格控件,用于显示和编辑表格数据。然而,在JTable中加入复选框是一个常见的需求,但是却不是那么容易实现。本文将介绍JTable中加入复选框的两种方法,...

    复杂JTable(复杂表头、跨行列表体)

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据集,通常用于创建用户界面中的表格。在一些复杂的应用场景中,我们可能需要实现更高级的功能,如复杂的表头和跨行列表体。这个主题主要关注如何...

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

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

    JTable 练习例子exa

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示表格数据。它是`javax.swing.JTable`类的实例,提供了一个可交互的二维数据视图,允许用户浏览、编辑和操作表格中的数据。这个"JTable ...

    JTable的使用收藏

    JTable的使用收藏 1.JTable与TableModel 1.TableModel与JTable的关系 2.TableModel实践 3.使用JTable+TableModel展示java中的数据对象 2.JTable展示方式的美化 1.设置表格的宽度和高度 2.要显示表头 3.新加列,将...

    JTable表头排序的两种方法

    在Java Swing库中,`JTable`是用于创建和显示二维数据的重要组件。它提供了丰富的功能,包括排序,使得用户可以方便地对表格中的数据进行升序或降序排列。本篇文章将详细介绍如何实现`JTable`表头的排序功能,并提供...

Global site tag (gtag.js) - Google Analytics