在我的应用程序中,我展示了一个具有大量数据的表格列表。所有表格可能无法适合窗口大小,我们需要滚动才能看到底部的表格。在这里,我需要对表格进行展开/折叠处理。用户可以选择他想查看的所有表格中的哪些表格。这是我的应用程序的样本截图。
我该如何做呢?
您可以尝试使用JXTreeTable或TreeTable。
或者您可以通过切换jtable的可见性来实现展开/折叠效果。当它可见时,如果用户选择折叠,则使用setVisible(false);
,在展开时则相反。[不确定这是否有效。]
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();}
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
中的每个表格重复执行。 JXTaskPaneContainer container = new JXTaskPaneContainer();
forEach table:
JXTaskPane pane = new JXTaskPane(tableTitle);
pane.add(table);
container.add(pane);
somePanel.add(new JScrollPane(container);
编辑(在代码片段中忘记了任务窗格,还没喝咖啡之前从未发布过;-)