我正在设计一个非常简单的GUI,但没有任何运气。基本上,外部布局有两列,这是一个拆分器窗格(这是我正在编写的一个IRC客户端)。左边是服务器/频道/用户树,右边是聊天窗格。现在我将其分解,因此在右侧有顶部的输出窗格,底部有一个单行输入框。
这是在整体上创建GUI的代码(这只是一小段代码)
ChatModel cm = new ChatModel();
ChatView cv = new ChatView(cm);
treeViewChatSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, serverTreeView, cv);
treeViewChatSplitPane.setSize(500, 500);
treeViewChatSplitPane.setBorder(null);
treeViewChatSplitPane.setDividerSize(3);
this.getContentPane().add(treeViewChatSplitPane);
this.setSize(500, 500);ChatView构造函数(它扩展了java.awt.Container)中包含以下内容
this.model = model;
this.setLayout(new BorderLayout());
mainTextArea = new JTextArea();
mainTextArea.setLineWrap(true);
mainTextArea.setBackground(new Color(255, 255, 255));
inputField = new JTextField();
this.add(mainTextArea, BorderLayout.CENTER);
this.add(inputField, BorderLayout.PAGE_END);现在,它最初看起来很好,但我遇到的问题是,您可以将拆分器移动到左侧,但不能移动到右侧。事实上,如果你向左移动,你就不能再向右移动了。我之前确实让它工作了,但实现不是很好,我已经忘记了我做了什么。
有什么想法吗?我不明白这为什么行不通。
发布于 2009-02-11 19:06:50
如果我没记错的话,JSplitPanes总是遵循组件的最小尺寸。尝试显式地将ChatView的最小大小设置为(0,0),看看这是否有帮助。如果是这样的话,您可以查看其中的每个组件,看看是哪个组件导致了问题。
发布于 2009-02-11 19:07:19
您在任何地方都设置了ChatView的最小大小吗?如果是这样,这个最小值不是等于帧大小( 500 X 500 )吗?
使用所提供的信息进行故障排除有些困难,但以下建议对我(以及使用它的人)总是有效的。
顺便说一句,也许用javax.swing.JComponent代替java.awt.Container会更好。
我们的想法是从最简单的事情开始,从最简单的事情开始,并从那里发展。大多数时候,问题出在我们设置的一些愚蠢的属性中,并清理了它出现的所有问题。
这应该不会超过1小时。为了这个。
发布于 2009-04-17 08:25:35
如果两个组件都有合理的首选大小和最小大小,而您仍然看到奇怪的行为,那么您可能需要在JSplitPane上调用setResizeWeight()。
请注意,以编程方式设置分隔符位置(setDividerLocation())几乎不起作用。
https://stackoverflow.com/questions/538240
复制相似问题