gpt4 book ai didi

Java Swing Ghost 组件 - JFrame 内水平框内的 JSplitPane

转载 作者:行者123 更新时间:2023-12-02 03:30:06 25 4
gpt4 key购买 nike

为我正在制作的工具创建一个非常基本的 GUI,我遇到了一个不寻常的问题。基本思想是创建 JList 和 JTable 并将它们放置在 JSplitPane 中。该分割 Pane 将占据 JFrame 中的大部分空间,但也会有一些按钮放置在分割 Pane 下方,但仍在同一个 JFrame 内。为了完成我想要的设计,我使用水平框作为按钮,使用垂直框作为分割 Pane 和水平按钮框。我设计了分割 Pane 并按需要工作,因此我开始进行调整以将按钮添加到 JFrame 中。当我完成修改后,按钮位于拆分 Pane 下方的正确位置,但拆分 Pane 左侧有一个幽灵组件。我确信这是简单而愚蠢的事情,但我就是找不到哪里出错了。这是一些它的外观图片。

这就是分割 Pane 本身的样子。 Split Pane only

这就是添加了框和按钮后的样子。 Boxes and Buttons

我正在尝试删除分割 Pane 左侧的空白区域。

这是相关代码:

list 是 JList,table 和 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 包装在包含 BorderLayoutJPanel 中。结果的不同与每个布局管理器(BoxLayout 与 BorderLayout)管理子组件大小的方式有关。

关于Java Swing Ghost 组件 - JFrame 内水平框内的 JSplitPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com