控制 jtable 的 AutoFilterTableHeader 的 pop-up(下拉)菜单大小
Controlling pop-up (dropdown) menu size of a AutoFilterTableHeader for a jtable
如何控制 jtable header 的自动过滤器 pop-up 菜单的大小。我有一些长文本,因为单元格输入和 pop-up 菜单跨越多个显示器?
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)
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.关于现在如何解决这个问题的任何想法?你给出的任何方向都会对像我这样的非程序员有帮助。谢谢。
弹出窗口宽度设置正确
自定义过滤器对话框大小仍然混乱
如何控制 jtable header 的自动过滤器 pop-up 菜单的大小。我有一些长文本,因为单元格输入和 pop-up 菜单跨越多个显示器?
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)
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.关于现在如何解决这个问题的任何想法?你给出的任何方向都会对像我这样的非程序员有帮助。谢谢。
弹出窗口宽度设置正确
自定义过滤器对话框大小仍然混乱