首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java GUI布局问题

问Java GUI布局问题
EN

Stack Overflow用户
提问于 2009-02-20 20:01:45
回答 6查看 1.7K关注 0票数 1

我正在写一个小的Java GUI程序,我有一些Java没有正确布局的问题。我最近没有做太多的Java GUI代码,所以我看不出问题出在哪里。

代码语言:javascript
复制
    final JFreeChart chart = createChart(dataset);
    final ChartPanel chartPanel = new ChartPanel(chart, false);
    chartPanel.setPreferredSize(new Dimension(500, 270));
    JPanel buttonPanel = new JPanel();
    buttonPanel.setPreferredSize(new Dimension(500,50));

    JButton toggleButton = new JButton("Toggle");
    final JTextField minRange = new JTextField("10");
    final JTextField maxRange = new JTextField("1000");
    JButton setLimits = new JButton("Set Limits");

    buttonPanel.add(toggleButton, BorderLayout.NORTH);
    buttonPanel.add(minRange, BorderLayout.SOUTH);
    buttonPanel.add(maxRange, BorderLayout.SOUTH);
    buttonPanel.add(setLimits);

JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chartPanel, buttonPanel);
jsp.setDividerLocation(0.8);
setContentPane(jsp);

这里发生的情况是所有的布局选项都被完全忽略了。图形用户界面组件显示正确,分隔符特别忽略了JFreeChart的首选大小,并将其压缩到框架顶部大约5%的空间。

EN

回答 6

Stack Overflow用户

发布于 2009-02-20 21:09:05

除了拆分窗格没有考虑所需大小的问题之外,您正在使用BorderLayout常量,但没有指定面板的布局(缺省值为FlowLayout)。

这一点:

代码语言:javascript
复制
JPanel buttonPanel = new JPanel();

应该是:

代码语言:javascript
复制
JPanel buttonPanel = new JPanel(new BorderLayout());
票数 4
EN

Stack Overflow用户

发布于 2009-02-20 20:36:33

我相信在JSplitPane上使用浮动比例只在拆分窗格“实现”的时候有效,否则你会得到一个零的比例,因为它不知道它会有多大。

另外:

代码语言:javascript
复制
buttonPanel.add(minRange, BorderLayout.SOUTH);
buttonPanel.add(maxRange, BorderLayout.SOUTH);

BorderLayout只允许在每个区域中有一个组件,因此最小范围永远不会出现,因为maxRange现在是“南”组件。如果您想要这两个组件,您需要将这两个组件放在另一个面板中,然后将该面板添加到南边。

票数 2
EN

Stack Overflow用户

发布于 2009-02-20 20:05:54

也尝试设置最小大小。

请参阅:Java GUI Problems

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/571026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档