爲我正在創建的工具創建一個非常基本的GUI,並且遇到了一個不尋常的問題。基本的想法是創建一個JList和JTable,並將它們放在一個JSplitPane中。該分割窗格將佔用JFrame中的大部分空間,但在分割窗格下方也會有幾個按鈕,但仍位於同一個JFrame內。爲了完成我想要的設計,我使用了一個水平方向的按鈕框,以及一個垂直的方框,用於分割窗格和水平按鈕方框。我設計了分割窗格並按照需要工作,因此我開始進行調整以將按鈕添加到JFrame中。完成修改後,按鈕位於拆分窗格下的正確位置,但在拆分窗格左側有一個幻影組件。我敢肯定它有些簡單而愚蠢,但我無法找到我要去哪裏的錯誤。以下是它的外觀圖片。Java Swing Ghost組件 - JSplitPane內部水平框內JFrame
這是拆分窗格自身的外觀。 Split Pane only
這是它看起來是如何與框和按鈕添加。 Boxes and Buttons
我想擺脫拆分窗格左側的空白區域。
這是相關代碼:
列表是一個JList,桌子和viewTable是JTable中
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'中。 – copeg
完美!感謝你及時的答覆。 – Evan