在我的应用程序中,我显示了一个包含大量数据的表列表。所有的表可能都不适合窗口,我们需要滚动以查看底部的表。在这里,我需要展开/折叠表。用户可以选择他想在所有表中查看的表。这是我的应用程序的示例屏幕截图。
我该怎么做?
flvlnr441#
1.您可以尝试JXTreeTable或TreeTable1.或者您可以切换jtable的可见性以产生展开/折叠效果。首先,当它可见时,使用select collapse,使用setVisible(false);,然后在expand中执行相反的操作。[不确定这是否有效。]
setVisible(false);
mbyulnm02#
public DesignGridTest(){ JFrame frame = new JFrame("Example 1"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel masterpanel = new JPanel(); DesignGridLayout masterlayout = new DesignGridLayout(masterpanel); JCheckBox chk1 = new JCheckBox("Check Box1"); masterlayout.row().left().add(chk1); JPanel panel1 = new JPanel(); JTable table1 = new JTable(); table1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); panel1.add(table1); final IRow row1 = masterlayout.row().grid().add(panel1); chk1.setSelected(true); chk1.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) row1.show(); else row1.hide(); frame.pack(); } }); frame.add(masterpanel); frame.pack(); frame.setVisible(true); } public static void main(String a[]){new DesignGridTest();}
将面板(panel1、panel2 ..)添加到“主布局”以获得所需的外观
xytpbqjk3#
org.netbeans.swing.outline.Outline是一个很有吸引力的替代方案,如本文和here所述。
org.netbeans.swing.outline.Outline
cx6n0qe34#
如果使用DesignGridLayout,可以很容易地实现Harry提出的基于可见性的展开/折叠效果(作为第二个选项):
DesignGridLayout layout = new DesignGridLayout(panel); ... JCheckBox expand1 = newCheckBox("First"); layout.row().left().add(expand1); final IRow row = layout.row().grid().add(table1); expand.setSelected(true); expand.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemIvent event) { if (event.getStateChanged() == ItemIvent.SELECTED) row.show(); else row.hide(); } };
对panel中的每个表重复上面的代码(在“...“之后)。在上面的代码中,每个标签都被替换为一个复选框,当取消选中该复选框时,将隐藏下面的表。您可以在“动态布局”部分查看DesignGridLayout示例应用程序(在主页上以WebStart形式提供)。
panel
...
h6my8fg25#
另一种选择是使用SwingX的JXTaskPane
JXTaskPaneContainer container = new JXTaskPaneContainer(); forEach table: JXTaskPane pane = new JXTaskPane(tableTitle); pane.add(table); container.add(pane); somePanel.add(new JScrollPane(container);
已编辑(忘记了taskPane中的代码片段,从不发布before-coffee ;- )
5条答案
按热度按时间flvlnr441#
1.您可以尝试JXTreeTable或TreeTable
1.或者您可以切换jtable的可见性以产生展开/折叠效果。首先,当它可见时,使用select collapse,使用
setVisible(false);
,然后在expand中执行相反的操作。[不确定这是否有效。]mbyulnm02#
将面板(panel1、panel2 ..)添加到“主布局”以获得所需的外观
xytpbqjk3#
org.netbeans.swing.outline.Outline
是一个很有吸引力的替代方案,如本文和here所述。cx6n0qe34#
如果使用DesignGridLayout,可以很容易地实现Harry提出的基于可见性的展开/折叠效果(作为第二个选项):
对
panel
中的每个表重复上面的代码(在“...
“之后)。在上面的代码中,每个标签都被替换为一个复选框,当取消选中该复选框时,将隐藏下面的表。
您可以在“动态布局”部分查看DesignGridLayout示例应用程序(在主页上以WebStart形式提供)。
h6my8fg25#
另一种选择是使用SwingX的JXTaskPane
已编辑(忘记了taskPane中的代码片段,从不发布before-coffee ;- )