【问题标题】:Placing border in desire location inside JPanel在JPanel内的期望位置放置边框
【发布时间】:2014-04-11 01:57:20
【问题描述】:

我试图在我的 JPanel 内的按钮周围放置一个边框。我有这个:

 Border lineBorder = BorderFactory.createLineBorder(Color.black);

 welcomePanel.setBorder(lineBorder);

但这只会在我的整个应用程序窗口周围设置边框,这是有道理的。我希望能够将边框放置在我想要的位置....我在将按钮放置在所需位置时这样做了

button1.setBounds(10, 10, 60, 30);

我查看了 API 并看到了一个 paintBorder 方法,其参数为 int x、int y、int width、int height,这对我来说很有意义,但我无法让它工作。

任何建议都将不胜感激

【问题讨论】:

  • told to you previously 一样,您不想使用空布局。使用这些会让你陷入困境,而你对这些的使用直接导致了你当前的问题。 编辑:更好的是,研究@MadProgrammer 的答案以获得一些极好的建议。
  • “任何建议都将不胜感激”我建议你问一个明确的问题。
  • 我很清楚“setBounds”不是正确的方法,在这种情况下必须使用它,因为这是要求中要求的。

标签: java swing jpanel border


【解决方案1】:

首先将您的按钮添加到另一个JPanel...

JPanel buttons = new JPanel();
buttons.setLayout(...);
// add buttons...

设置此面板的Border...

buttons.setBorder(BorderFactory.createLineBorder(Color.black));

将此添加到您的主容器中...

welcomePanel.add(buttons);

像素完美布局是现代 UI 设计中的一种错觉,您无法控制字体选择、渲染管道、DPI 等因素,这些因素会改变每个组件定位所需的要求,这就是布局的作用经理。

Swing 旨在与布局管理器一起使用,尝试不这样做会导致无穷无尽的问题和挫败感,因为您试图找到更多的技巧来解决这些问题。

您可以使用 EmptyBorders 之类的东西来在组件之间引入空白空间,或者使用 InsetsGridBagLayout

【讨论】:

  • 感谢您的回答,我会在以后可以使用它的程序中考虑到这一点。
猜你喜欢
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多