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

系统 2000 0

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

 

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

 

代码如下:

 

 

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 ;

    }

}

 

 

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论