【问题标题】:Resize my progress bars调整我的进度条大小
【发布时间】:2014-04-22 17:27:09
【问题描述】:

我正在尝试重新调整进度条的大小以更好地适应我希望界面的外观,但是无论我将高度和宽度更改为什么,都不会发生任何变化。

下面是我的一个进度条的代码,总共有 10 个...我已将宽度/高度设置为 5px 到 300px 等等,只是为了看看是否发生了任何变化。

 barPanel.setLayout(new GridLayout(0 , 4));
 healthBar = new JProgressBar (0,100);
 healthLabel = new JLabel ("Health: ");
 healthBar.setPreferredSize( new Dimension (width, height));
 healthBar.setMaximumSize(new Dimension(width,height));
 healthBar.setMinimumSize(new Dimension(width, height));
 barPanel.add(healthLabel);
 healthLabel.setForeground(Color.white);
 barPanel.add(healthBar);

我尝试在网格和边框布局之间切换,但我对界面设计还很陌生...非常新,如果有人可以提供帮助,将不胜感激,如果需要更多代码片段,我会很高兴添加它们。

我会完全上传我的解决方案,但它是针对大学作业的,稍后我会完全更新它。

这只是之前解决方案的改编版本,但我创建了 4 个面板并将它们放在一个父面板中。

两个面板用于 JLabels 和 2 个面板用于进度条。然后在这些面板中,我添加了我的 JLabels 和进度条,并使用 bounds 方法调整它们的大小和位置,即。 barPanel.setBounds(10,10,300,25); (X, Y, 宽度, 高度)

抱歉,我目前无法给出完整的解决方案。

【问题讨论】:

  • 1) 你想发生什么。 2) 实际发生了什么?
  • 我希望改变它们的大小,但无论我设置什么高度和宽度,它们的大小都没有发生任何变化,抱歉现在会在帖子中指定。
  • 你读过A Visual Guide to Layout Managers吗?布局管理器是一个复杂的主题,在您尝试使用它们之前值得阅读一些背景知识。
  • 感谢您的参考,我会读一读。
  • 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。 2) 提供 GUI 的 ASCII 艺术(或带有简单绘图的图像),因为它应该以最小尺寸出现,并且(如果可调整大小)具有额外的宽度/高度。

标签: java swing layout jpanel


【解决方案1】:

如果你想在 GridLayout 中调整进度条的大小,那么这里可能会有所帮助:

barPanel.setLayout(new GridLayout(0 , 4,10,10));//Change Horizontal and Vertical gap like this

但可能无法提供您想要的尺寸,它只会增加组件之间的差距。

或者其他方式

如果你真的对制作 ui 感兴趣,最好创建一个仅保留进度条的面板,并使用现有的 barpanel 设置标签和新面板。由于面板的默认布局是 FlowLayout ,进度条的大小仍然会被拉伸,您可以使用setPreferredSize( new Dimension (width, height)) 调整它的大小。您需要使用布局管理器的实用程序来进行有效的设计。

您修改后的代码应如下所示:

    barPanel.setLayout(new GridLayout(0 , 4));
     JPanel newPanel=new JPanel();

     healthBar = new JProgressBar (0,100);
     healthLabel = new JLabel ("Health: ");
      newPanel.add(healthBar);
      healthBar.setPreferredSize( new Dimension (width, height));
     //healthBar.setMaximumSize(new Dimension(width,height));
     //healthBar.setMinimumSize(new Dimension(width, height));

     barPanel.add(healthLabel);
     healthLabel.setForeground(Color.white);

 barPanel.add(newPanel);

【讨论】:

  • 谢谢,您的第一个选项确实改善了外观,但我将尝试第二个选项,可能需要一点时间,但如果我能做到,我会反馈:)
  • @Andrew Thompson,我在布局兼容性方面弄错了,谢谢我已经编辑了我的答案。
  • 是的,我终于到了那里,我会将我所做的添加到我的帖子中。这真的帮助我最终到达那里,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2011-04-30
  • 2012-05-31
  • 1970-01-01
  • 2017-10-18
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
相关资源
最近更新 更多