栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JTable标头中有多个可编辑的行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JTable标头中有多个可编辑的行

  • 只是在JTableHeader中使用TableCellEditor的想法是错误的,也不是multi_line_header,购买Jide(支持)

  • 使用JTextField中的RowFilter可能更简单,

  • 注意不要忘记将索引从视图坐标转换为模型坐标

import java.awt.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;//pre based on posts by @camickrpublic class TableFilterRow implements TableColumnModelListener {    private static final long serialVersionUID = 1L;    private Jframe frame = new Jframe();    private JTable table = new JTable(3, 5);    private JScrollPane scrollPane = new JScrollPane(table);    // Panel for text fields    private JPanel filterRow = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));    public TableFilterRow() {        table.setPreferredScrollableViewportSize(table.getPreferredSize());        table.getColumnModel().addColumnModelListener(this);        filterRow = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));        for (int i = 0; i < table.getColumnCount(); i++) { filterRow.add(new JTextField(" Sum at - " + i));        }        columnMarginChanged(new ChangeEvent(table.getColumnModel()));        frame.add(scrollPane);        frame.add(filterRow, BorderLayout.SOUTH);        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        frame.pack();        frame.setLocationRelativeTo(null);        frame.setVisible(true);    }    //  Implement TableColumnModelListener methods    //  (Note: instead of implementing a listener you should be able to    //  override the columnMarginChanged and columMoved methods of JTable)    @Override    public void columnMarginChanged(ChangeEvent e) {        TableColumnModel tcm = table.getColumnModel();        int columns = tcm.getColumnCount();        for (int i = 0; i < columns; i++) { JTextField textField = (JTextField) filterRow.getComponent(i); Dimension d = textField.getPreferredSize(); d.width = tcm.getColumn(i).getWidth(); textField.setPreferredSize(d);        }        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     filterRow.revalidate(); }        });    }    @Override    public void columnMoved(TableColumnModelEvent e) {        Component moved = filterRow.getComponent(e.getFromIndex());        filterRow.remove(e.getFromIndex());        filterRow.add(moved, e.getToIndex());        filterRow.validate();    }    @Override    public void columnAdded(TableColumnModelEvent e) {    }    @Override    public void columnRemoved(TableColumnModelEvent e) {    }    @Override    public void columnSelectionChanged(ListSelectionEvent e) {    }    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     TableFilterRow frame = new TableFilterRow(); }        });    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号