JTable表格 表格居中(表头,内容),表格添加图片,下拉选框,添加按钮

笔记整理

1. 表头居中

要使 JTable 的表头居中,可以通过直接设置表头的样式来实现。以下是一个示例:

1.获取 JTableHeader:

  • 通过 JTable 的 getTableHeader 方法获取。
    2.设置表头的默认渲染器:
  • 创建一个 DefaultTableCellRenderer 对象。
  • 设置其文本对齐方式为居中。
    -将该渲染器设置为表头的默认渲染器。
//1.获取 JTableHeader
JTableHeader header = table.getTableHeader();
//2.设置表头的默认渲染器:
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();  
renderer.setHorizontalAlignment(SwingConstants.CENTER);  
header.setDefaultRenderer(renderer);

3.可以通过 setBackground、setForeground 和 setFont 等方法进一步设置表头的背景颜色、文本颜色和字体样式。

2.内容居中

1.在创建 JTable 时设置属性

JTable table = new JTable(data,columnNames) {
            @Override
            public TableCellRenderer getDefaultRenderer(Class<?> columnClass) {
                DefaultTableCellRenderer renderer = (DefaultTableCellRenderer) super.getDefaultRenderer(columnClass);
                renderer.setHorizontalAlignment(SwingConstants.CENTER);
                return renderer;
            }
        };

2.通过布局管理器
将 JTable 放置在一个具有居中布局特性的容器中,比如 JPanel 使用 BorderLayout 并将 JTable 添加在中间位置。

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(table, BorderLayout.CENTER);

3.JTable中添加图片

通过setModel重写方法来添加图片

String[] columnNames = {"序号","36"};  // 表头
Object[][] data = {
                 {new ImageIcon("image2.jpg"),"36"},     //new ImageIcon("这里放图片地址")
                 {new ImageIcon("image2.jpg"),"36"},
        };

        JTable table=new JTable(data,columnNames);
        JScrollPane scrollPane = new JScrollPane(table);
        //重写方法添加图片
        table.setModel(new DefaultTableModel(data,columnNames){
            @Override
            public Class<?> getColumnClass(int columnIndex) {
                return getValueAt(1,columnIndex).getClass();
            }
        });
        //表格行高
        table.setRowHeight(100);

4.下拉选框

首先创建了一个表格模型,然后在添加数据时,为每一行的某一列创建并添加一个下拉框。

       String[] columnNames = {"序号","状态"};
        Object[][] data = {
                {"序号"},
                {"1"},
                {"2"},
                {"3"},
                {"4"},
                {"5"},
                {"6"},
                {"7"},
                {"8"}
        };

        JTable table = new JTable(data,columnNames);
       //表格下拉框
        DefaultTableModel model = new DefaultTableModel();
        model.setDataVector(data, columnNames);
        table.setModel(model);
        //用Vector集合来作为下拉框的选项值,方便删除修改下拉框中选项值的内容。
        Vector<String> vector = new Vector<String>();
        vector.add("a");
        vector.add("b");

        JComboBox<String> comboBox = new JComboBox<String>(vector);
        //下拉框监听
        comboBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED) {
                    System.out.println(comboBox.getSelectedItem()); //输出选中的值
                }
            }
        });
        //表格编辑器  //getColumn(这里的数字根据你的(列数-1)来决定)
        table.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(comboBox));

5.添加按钮

 String[] columnNames = {"序号","测试","事件"};  //表头
        Object[][] data = {       //必须是三个,第三个可以设置为空
                {"1", "1",""},
                {"2", "2",""},
                {"3", "3",""},
                {"4", "3",""},
        };
        JTable table = new JTable(data, columnNames);
        //添加按钮     //getColumn(这里的数字根据你的(列数-1)来决定)
        table.getColumnModel().getColumn(2).setCellRenderer(new TableCellRendererButton());
        table.getColumnModel().getColumn(2).setCellEditor(new TableCellEditorButton());
        table.setRowSelectionAllowed(false);// 禁止表格的选择功能。不然在点击按钮时表格的整行都会被选中。

//重写按钮方法
 //按钮方法
    class TableCellRendererButton implements TableCellRenderer {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
                                                       int row, int column) {
            JButton button = new JButton("打开");
            return button;
        }
    }
    //按钮方法
    //添加事件
    class TableCellEditorButton extends DefaultCellEditor {
        private JButton btn;
        public TableCellEditorButton() {
            super(new JTextField());
            //设置点击一次就激活
            this.setClickCountToStart(1);
            btn = new JButton("打开");
            btn.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("按钮事件触发----");       //事件
                }
            });
        }

        @Override
        public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
            return btn;
        }
    }
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值