作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 MyTable
,它是 JXTable
的扩展:
public class MyTable extends JXTable{...}
按预期工作正常。现在我想让 DefaultColumnControlPopup 菜单在单击弹出菜单中的元素后仍然打开,以便用户可以进行多次单击,而无需烦人地单击 ColumnControlButton。
有人知道怎么做吗?
我一直试图根据 this tutorial 来解决但没有成功。
最佳答案
经过一番阐述后,如果知道如何去做,那就很容易了 - 显而易见......
为其他人提供完整的解决方案:
我有一个类正在使用 JXTable:
JXTable myTable = new JXTable(new MyTableModel())
...use_table_as_usually...
表的类:
public class MyTable extends JXTable{
public MyTable(AbstractTableModel model){
super(model);
//remove items for horizontal scrollbar, pack and packall
this.getActionMap().remove("column.horizontalScroll");
this.getActionMap().remove("column.packAll");
this.getActionMap().remove("column.packSelected");
//first two columns should be shown permanently
ColumnControlButton controlButton = new ColumnControlButton(this){
@Override
protected ColumnControlPopup createColumnControlPopup(){
return (new NFColumnControlPopup());
}
class NFColumnControlPopup extends DefaultColumnControlPopup{
@Override
public void addVisibilityActionItems(List<? extends AbstractActionExt> actions){
for(int i = 0; i < actions.size(); i++){
AbstractActionExt action = actions.get(i);
JCheckBoxMenuItem chk = new JCheckBoxMenuItem(action);
chk.setUI(new KeepOpenCheckBox());
//disable first two items but they will be still shown greyed
if(i == 0 || i == 1){
chk.setEnabled(false);
chk.setSelected(false);
}
else{
chk.setEnabled(true);
chk.setSelected(true);
}
chk.addItemListener(action);
super.addItem(chk);
}
}
}
};
this.setColumnControl(controlButton);
}
}
最后自定义类以保持ColumnControlPopup
打开:
public class KeepOpenCheckBox extends BasicCheckBoxMenuItemUI{
public static ComponentUI createUI(JComponent c){
return new KeepOpenCheckBox();
}
protected void doClick(MenuSelectionManager msm){
menuItem.doClick(0);
}
}
仅此而已。在这个例子中混合了三件事:-如何删除水平滚动条、pack 和 packall 不需要的项目;-如何从ColumnControlPopup
禁用某些列控件,但保持它们显示为灰色且不带复选标记;-点击JCheckBoxMenuItem
后如何保持ColumnControlPopup
打开;
解决方案基于我在互联网上找到的一些资源,但有些信息过时或不起作用(在 JMenu
中有效,但在弹出菜单中无效)。
关于java - Swingx DefaultColumnControlPopup 菜单仍然打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19157129/
我有 MyTable,它是 JXTable 的扩展: public class MyTable extends JXTable{...} 按预期工作正常。现在我想让 DefaultColumnCont
我是一名优秀的程序员,十分优秀!