将边界放置在JPanel内的期望位置



我正试图在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,这对我来说是有意义的,但我无法使其工作。

任何建议都将不胜感激

首先将按钮添加到另一个JPanel。。。

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

设置此面板的Border。。。

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

将此添加到主容器中。。。

welcomePanel.add(buttons);

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

Swing的设计目的是与布局管理器合作,当你试图找到更多的技巧来解决这些问题时,尝试不这样做会导致问题和挫折。

您可以使用类似EmptyBorder的东西在组件之间引入空格,或者使用GridBagLayoutInsets

最新更新