`
wangju19870301
  • 浏览: 36431 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

在表格单元格中添加标签和按钮

阅读更多

如下图所示,在表格单元格中添加标签和按钮:

 

 

代码如下:

 

 

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Cursor;

import java.awt.Dimension;

import java.awt.FlowLayout;

 

import javax.swing.AbstractCellEditor;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.table.TableCellEditor;

import javax.swing.table.TableCellRenderer;

 

import com.customcomponent.basicClass.BasicTableColumnModel;

 

import syspublicpanel.table.SysLoadTable;

import syspublicpanel.table.SysLoadTableModel;

import uiframework.tools.UIProperties;

 

public class TestTableRenderer extends JFrame {

    private static final long serialVersionUID = 3941331829886452257L;

    private SysLoadTable testTable = null;// 表格

   

    private static final String[] colNames = new String[] { "第一列", "第二列", "第三列" };// 表头

   

    public TestTableRenderer() {

       initialize();

    }

   

    /**

     * 初始化组件

     */

    private void initialize() {

       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       this.setSize(400, 300);

       this.setLocation(200, 100);

       this.setLayout(new BorderLayout());

       this.add(new JScrollPane(getTestTable()), BorderLayout.CENTER);

      

       this.setVisible(true);

    }

   

    private SysLoadTable getTestTable() {

       if (testTable == null) {

           SysLoadTableModel tableModel = new SysLoadTableModel(colNames);

           tableModel.setAllEditableColumn(false);// 设置所有列不可编辑

           tableModel.setColumnEditable("第三列", true);// 设置第三列可编辑

          

           /**

            * 添加表格内容

            */

           tableModel.addRow(new Object[] { "1", "2", null });

           tableModel.addRow(new Object[] { "11", "22", null });

           tableModel.addRow(new Object[] { "111", "222", null });

          

           testTable = new SysLoadTable(tableModel);

          

           BasicTableColumnModel columnModel = (BasicTableColumnModel) testTable.getColumnModel();

           columnModel.getColumn(2).setCellRenderer(new CustomTableRenderer());

           columnModel.getColumn(2).setCellEditor(new CustomTableRenderer());

       }

       return testTable;

    }

 

    public static void main(String[] args) {

       try {

           UIManager.setLookAndFeel(UIProperties.getInstance().getLookAndFeel());

       } catch (ClassNotFoundException e) {

           e.printStackTrace();

       } catch (InstantiationException e) {

           e.printStackTrace();

       } catch (IllegalAccessException e) {

           e.printStackTrace();

       } catch (UnsupportedLookAndFeelException e) {

           e.printStackTrace();

       }

      

       new TestTableRenderer();

    }

}

 

/**

 * 自定义表格渲染器

 */

class CustomTableRenderer extends AbstractCellEditor implements TableCellRenderer, TableCellEditor {

    private static final long serialVersionUID = 7380564532198049597L;

    private JPanel panel = null;// 面板

    private JLabel delLabel = null;// 删除标签

    private JButton modifyButton = null;// 修改按钮

   

    private static final String imagePath = "/sysimages/";// 图片路径

   

    public CustomTableRenderer() {

       delLabel = new JLabel(new ImageIcon(getClass().getResource(imagePath + "delete.gif")));

       delLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));

       delLabel.setToolTipText("删除");

      

       modifyButton = new JButton("修改");

       modifyButton.setPreferredSize(new Dimension(60, 20));

      

       panel = new JPanel();

       panel.setBackground(Color.WHITE);

       panel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 0));

       panel.add(delLabel);

       panel.add(modifyButton);

    }

   

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

       if (row == table.getSelectedRow()) {

           panel.setBackground(table.getSelectionBackground());

       } else {

           panel.setBackground(Color.WHITE);

       }

       return panel;

    }

      

 

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

              if (row == table.getSelectedRow()) {

            panel.setBackground(table.getSelectionBackground());

       } else {

           panel.setBackground(Color.WHITE);

       }

       return panel;

    }

 

    public Object getCellEditorValue() {

       return null;

    }

}

 

 

  • 大小: 5.1 KB
分享到:
评论

相关推荐

    jQuery EasyUI 1.3 API 中文教程

    合并数据表格单元格 创建自定义视图 创建数据表格页底摘要 条件设置数据表行背景 创建折叠数据表格 折叠数据表格应用 折叠数据表格中套用数据表格 数据表格处理海量数据方法 窗口应用 创建简单...

    ie_developer_toolbar v1.00.2188.0汉化版

    · 对表格、表格单元格、图片及选定的标签描边; · 验证 HTML、CSS、WAI(网页易读性倡议)、RSS feed链接; · 显示图像的尺寸、文件大小、路径、描述文字等; · 自定义浏览器窗口尺寸; · 清除指定域的浏览器缓存...

    layui点击按钮添加可编辑的一行方法

    昨天已经成功添加了一行,今天希望所添加的一行可以进行单元格编辑。 然而,发现添加了edit:’text’以后也不可以进行单元格编辑,而原本已有的数据可以,因此通过浏览器调试看了原有数据的样式,如图所示: 因此,...

    Visual C++编程技巧精选集 光盘

    6.如何在消息提示框中绘制表格 7.如何在消息提示框中设置图标 8.如何在消息提示框中显示问号图标 9.如何在消息提示框中设置按钮 10.如何在消息提示框中显示“是”、“否”按钮 11.如何在消息提示框中显示“重试”、...

    WORD实用奇招妙技大荟萃

    在打开的“页面设置”窗口中单击“版式”标签项,然后在“应用于”框中选择是整篇文章还是文章的某一部分,接下来单击“行号”按钮,选择“添加行号”复选框,然后设置好“起始编号”、“行号间隔”和“编号方式”等...

    CKEditor 4.10.1 中文版.zip

    [Firefox]修正:右键单击包含空段落的多个选定表格单元格将删除选择;修正:当提供正确的配置并且[[]应用样式时,不会保留`<font>`标记;修正:自定义样式在[样式组合]中可能不可见插件;修正:从编辑器中删除以“object...

    delphi操作excel模块,图片,表格,读写删除

    可以读写文件中的宏,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加宏 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本文件 ...

    IOS应用开发攻略.pdf

    攻略16 在Nib中使用智能表格单元格 59 攻略17 定位单元格子视图 63 攻略18 组织复杂的表格视图 65 攻略19 生成双色表格视图 70 攻略20 给表格视图添加边框阴影 73 攻略21 在滚动视图中使用静态内容 79 ...

    全(免费)__Excel表格的35招秘技.doc

    在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”……序列(各元素之间用英文逗号隔开),确定退出。  再选中需要输入企业...

    Excel公式大全操作应用实例(史上最全)

    把分散在各单元格的内容合在一个单元格中 多个工作表的单元格合并计算 【条件自定义格式】 通过条件格式将小计和总计的行设为不同的颜色 如何实现这样的条件格式 隔行不同字体颜色怎么设置 让不同类型数据用不同颜色...

    HTML开发王

    9.2.7 表格中单元格的间距和衬距(cellspacing属性、cellpadding属性) 9.3 表格的标题(caption元素) 9.4 设置单元格(th元素、td元素) 9.4.1 使用th元素定义单元格 9.4.2 跨多行、多列的单元格 9.4.3 单元格的背景色彩...

    EXCEL函数公式集

    把分散在各单元格的内容合在一个单元格中 多个工作表的单元格合并计算 【条件自定义格式】 通过条件格式将小计和总计的行设为不同的颜色 如何实现这样的条件格式 隔行不同字体颜色怎么设置 让不同类型数据用不同颜色...

    超实用的jQuery代码段

    10.17 在列表框上添加自定义按钮 10.18 为列表添加自定义的缩略图图标 10.19 创建列表日历的效果 10.20 动态创建listview列表项 10.21 动态加载和切换页面 10.22 在页面切换时显示加载进度框 10.23 在屏幕旋转时更改...

    delphi 开发经验技巧宝典源码

    0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现闪动的标题栏文字 172 0258 怎样动态修改窗体图标 172 8.2 窗体的动态显示 173 0259 如何实现QQ窗体 173 0260 实现...

    File文件登记簿软件

     (1)督办通知单的第一行是二号字小标宋标题“XX县人民政府督办通知单”,点击“添加”按钮,新添一个单元格,在单元格内容输入框内填入“XX县人民政府督办通知单”。  (2)此标题不是表格内容,则按照无...

    delphi 开发经验技巧宝典源码06

    0255 在窗体标题栏上添加按钮 171 0256 取消窗体标题栏的关闭按钮 172 0257 如何实现闪动的标题栏文字 172 0258 怎样动态修改窗体图标 172 8.2 窗体的动态显示 173 0259 如何实现QQ窗体 173 0260 实现...

Global site tag (gtag.js) - Google Analytics