【发布时间】:2016-07-06 17:21:46
【问题描述】:
为我正在制作的工具创建一个非常基本的 GUI,但我遇到了一个不寻常的问题。基本思想是创建一个 JList 和 JTable 并将它们放在 JSplitPane 中。该拆分窗格将占用 JFrame 中的大部分空间,但也会有一些按钮位于拆分窗格下方,但仍位于同一个 JFrame 中。为了完成我想要的设计,我使用水平框作为按钮,使用垂直框作为拆分窗格和水平按钮框。我设计了拆分窗格并按需要工作,因此我开始进行调整以将按钮也添加到 JFrame。当我完成修改后,按钮位于拆分窗格下方的正确位置,但拆分窗格左侧有一个幻影组件。我确定它是简单而愚蠢的,但我就是找不到哪里出错了。这是它的外观图片。
这就是拆分窗格本身的外观。 Split Pane only
这是添加了框和按钮后的样子。 Boxes and Buttons
我正在尝试删除拆分窗格左侧的空白区域。
这是相关代码:
list是JList,table和viewTable是JTables
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setSelectedIndex(0);
list.addListSelectionListener(this);
listScroll = new JScrollPane(list);
viewTable = table;
columnModel = viewTable.getColumnModel();
for(int i = 0;i<columnModel.getColumnCount();i++)
columnModel.getColumn(i).setMinWidth(150);
viewTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
dataScroll = new JScrollPane(viewTable,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
dataScroll.getHorizontalScrollBar().setUnitIncrement(150);
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,listScroll,dataScroll);
JFrame viewFrame = new JFrame("View/Delete");
viewFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton deleteButton, revertButton, viewCancelButton;
Box viewBox = Box.createVerticalBox();
Box ButtonBox = Box.createHorizontalBox();
viewCancelButton = new JButton("Cancel");
viewCancelButton.addActionListener(this);
revertButton = new JButton("Revert Changes");
revertButton.addActionListener(this);
deleteButton = new JButton("Delete");
deleteButton.addActionListener(this);
ButtonBox.add(viewCancelButton);
ButtonBox.add(Box.createRigidArea(new Dimension(30,0)));
ButtonBox.add(revertButton);
ButtonBox.add(Box.createRigidArea(new Dimension(30,0)));
ButtonBox.add(deleteButton);
viewBox.removeAll();
viewBox.add(splitPane);
viewBox.add(Box.createRigidArea(new Dimension(0,30)));
viewBox.add(ButtonBox);
viewBox.add(Box.createRigidArea(new Dimension(0,30)));
viewBox.setVisible(true);
viewFrame.add(viewBox);
viewFrame.pack();
viewFrame.setVisible(true);
提前感谢您的帮助!如果您需要更多信息,请告诉我。欢迎任何建议。
【问题讨论】:
-
在添加到垂直框之前将 JSplitPane 包装在包含
BorderLayout的JPanel中。 -
完美!感谢您的快速回答。