0

如何控制 jtable 标头的自动过滤器弹出菜单的大小。我有一些长文本作为单元格输入和弹出菜单跨越显示器?

在此处输入图像描述

columnName =[{'Date'},{'RSS'},{'Title'},{'Description'}];
    DTM = javaObjectEDT(com.jidesoft.grid.DefaultTableModel(data,columnName));
    jtable = javaObjectEDT(com.jidesoft.grid.SortableTable(DTM));
    theader = javaObjectEDT(com.jidesoft.grid.AutoFilterTableHeader(jtable));
    theader.setAutoFilterEnabled(true)
    % theader.setShowFilterName(true)
    theader.setShowFilterIcon(true)
    theader.setAllowMultipleValues(true)
    jtable.setTableHeader(theader)
4

1 回答 1

0

JIDE 网格开发人员指南并没有真正触及这个问题,但很明显,可以扩展 AutoFilterTableHeader 来控制弹出面板的宽度,这确实是一个 jpanel。而不是将侦听器附加到弹出窗口然后更改面板的宽度;我覆盖 PopupPanel (包括它的超类)并将宽度设置为等于当前列的宽度,并且效果很好。

import com.jidesoft.combobox.PopupPanel;
import com.jidesoft.grid.AutoFilterBox;
import com.jidesoft.grid.AutoFilterTableHeader;
import com.jidesoft.grid.AutoFilterTableHeaderEditor;

import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableModel;
import java.awt.*;

public class AutoFilterPopSize extends AutoFilterTableHeader
{
    public AutoFilterPopSize(JTable table)
    {
        super(table);
    }

    @Override
    protected TableCellEditor createDefaultEditor()
    {
        if (isAutoFilterEnabled())
        {
            return new AutoFilterTableHeaderEditor()
            {
                @Override
                protected AutoFilterBox createAutoFilterBox()
                {
                    return new AutoFilterBox()
                    {
                        @Override
                        protected PopupPanel createPopupPanel(TableModel tableModel, int columnIndex, Object[] possibleValues)
                        {
                            PopupPanel panel = super.createPopupPanel(tableModel, columnIndex, possibleValues);
                            panel.setStretchToFit(false);
                            int wdth = columnModel.getColumn(columnIndex).getWidth();
                            panel.setPreferredSize(new Dimension(wdth, 400));
                            return panel;
                        }
                    };
                }
            };
        }
        else {
            return null;
        }
    }
}

但仍然是一个未解决的问题;when jide's custom filter is selected and a condition is set, the dialog box size is still spanning across the monitors. 关于如何解决这个问题的任何想法?您给出的任何方向都会对像我这样的非程序员有所帮助。谢谢你。

弹出宽度设置正确 https://i.stack.imgur.com/tIMIT.png

自定义过滤器对话框大小仍然混乱 在此处输入图像描述

于 2018-04-20T15:19:21.030 回答