【发布时间】:2021-05-01 16:17:35
【问题描述】:
我在 JPanel 中添加了一个按钮并尝试更改按钮的大小和位置。我尝试了不同的代码行,但它们不起作用。还输入parent.setLayout(null); 或panel.setLayout(null); 将完全删除按钮和背景
代码如下:
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.*;
public class app {
public static void main(final String[] args) {
final JFrame parent = new JFrame("CPS TEST");
JButton button = new JButton("Button");
JPanel panel = new JPanel();
panel.setLayout(null);
panel.add(button);
panel.setBackground(Color.DARK_GRAY);
parent.add(panel, BorderLayout.CENTER);
parent.setSize(500, 300);
parent.setBackground(Color.CYAN);
parent.setLocationRelativeTo(null);
parent.setVisible(true);
parent.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
【问题讨论】:
-
你没有给我们足够的信息。您如何尝试更改按钮的大小,何时更改?您发布的代码中是否存在某些行为与您预期的不同,如果是,它是什么?我们很乐意为您提供帮助,但我们无法为您编写问题。
-
@arcy 我想说的是,添加 button.setSize 不会改变按钮的大小,使用 button.setBounds 不会改变位置。
-
这仍然不足以帮助您。您将按钮放在哪里、是否涉及布局管理器、是否对 UI 调度线程给予足够的关注都很重要。我花了很多时间猜测人们需要什么,但通常都被浪费了。您发布的程序(假设它完全运行)并不能说明您描述的问题 - 没有尝试在那里更改按钮的大小。我还建议您退后一步,告诉您总体上要做什么,而不是致电
setSize()。我们仍然需要细节。 -
试图改变按钮的大小和位置 - 为什么? Swing 组件旨在确定它们自己的首选尺寸。如果您尝试在文本周围添加额外的空间,请使用
setMargin(...)方法。布局管理器将根据布局管理器的规则定位按钮。如果您想要不同的位置,请使用不同的布局管理器。您已被要求提供您未提供的要求的详细信息,因此我们无法给出具体建议。 (1-)
标签: java swing jframe jpanel jbutton