JLabel 与 JFrame 不完全一致
JLabel does not fully allign with JFrame
我有一个 JFrame,上面有一个 JLabel,名为 "coloredLabel",它所在的 class 的一个实例在它们两个上都是 运行。随机数量的对象在框架和标签上四处移动,并且不直接与它们交互。
唯一的问题是标签上方有一些可见的框架,我想要的是标签与框架完全对齐,而不粘贴对象(使用覆盖绘制方法绘制并提到为 "game.newBall" 和 "game.moveBall"。"test" 是 class 的名称。
这是我的主线程的外观,其中声明了框架和标签:
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("Bounce 2.0");
JLabel coloredLabel = new JLabel("");
test game = new test();
frame.add(game);
frame.setSize(300, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
coloredLabel.setOpaque(true);
coloredLabel.setBackground(game.backgroundColor);
coloredLabel.setPreferredSize(new Dimension(1000000,1000000));
frame.getContentPane().add(coloredLabel,BorderLayout.LINE_START);
game.add(coloredLabel);
for(int a = randInt(0,9); a<10; a++)
game.newBall(randInt(0,300),randInt(0,400));
while (true) {
double height = frame.getContentPane().getSize().getHeight();
double width = frame.getContentPane().getSize().getWidth();
int n = 0;
while(game.exists(n)==true){
game.moveBall(n,width,height);
n++;
}
game.repaint();
Thread.sleep(10);
}
}
所以我的问题是:
如何将 JLabel 与 JFrame 对齐?所以 JLabel 和框架之间没有 space。
我在此站点上搜索过此问题,但找不到相同的问题或足够相似的问题,因此我无法解决此问题。
- 已解决 - game.setBackground(...);
The only problem is that there is a bit of the frame visable above the label,
game.add(coloredLabel);
我猜 "game" 是一个 JPanel。默认情况下,JPanel 使用 FlowLayout
并且默认情况下 FlowLayout
具有 5 像素的水平和垂直间隙。
去掉FlowLayout
中的空隙。阅读 FlowLayout
的 constructors/methods 的 API 以自定义其行为。
当然,更大的问题是您的应用程序的设计。我不明白你使用标签并试图占据框架的所有 space 的意义。只需使用以下命令设置游戏面板的背景:
game.setBackground(...);
另外 class 名字应该:
- 以大写字符开头并且
- 具有描述性。
"test"
两者都不是。
我有一个 JFrame,上面有一个 JLabel,名为 "coloredLabel",它所在的 class 的一个实例在它们两个上都是 运行。随机数量的对象在框架和标签上四处移动,并且不直接与它们交互。 唯一的问题是标签上方有一些可见的框架,我想要的是标签与框架完全对齐,而不粘贴对象(使用覆盖绘制方法绘制并提到为 "game.newBall" 和 "game.moveBall"。"test" 是 class 的名称。 这是我的主线程的外观,其中声明了框架和标签:
public static void main(String[] args) throws InterruptedException {
JFrame frame = new JFrame("Bounce 2.0");
JLabel coloredLabel = new JLabel("");
test game = new test();
frame.add(game);
frame.setSize(300, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
coloredLabel.setOpaque(true);
coloredLabel.setBackground(game.backgroundColor);
coloredLabel.setPreferredSize(new Dimension(1000000,1000000));
frame.getContentPane().add(coloredLabel,BorderLayout.LINE_START);
game.add(coloredLabel);
for(int a = randInt(0,9); a<10; a++)
game.newBall(randInt(0,300),randInt(0,400));
while (true) {
double height = frame.getContentPane().getSize().getHeight();
double width = frame.getContentPane().getSize().getWidth();
int n = 0;
while(game.exists(n)==true){
game.moveBall(n,width,height);
n++;
}
game.repaint();
Thread.sleep(10);
}
}
所以我的问题是: 如何将 JLabel 与 JFrame 对齐?所以 JLabel 和框架之间没有 space。
我在此站点上搜索过此问题,但找不到相同的问题或足够相似的问题,因此我无法解决此问题。
- 已解决 - game.setBackground(...);
The only problem is that there is a bit of the frame visable above the label,
game.add(coloredLabel);
我猜 "game" 是一个 JPanel。默认情况下,JPanel 使用 FlowLayout
并且默认情况下 FlowLayout
具有 5 像素的水平和垂直间隙。
去掉FlowLayout
中的空隙。阅读 FlowLayout
的 constructors/methods 的 API 以自定义其行为。
当然,更大的问题是您的应用程序的设计。我不明白你使用标签并试图占据框架的所有 space 的意义。只需使用以下命令设置游戏面板的背景:
game.setBackground(...);
另外 class 名字应该:
- 以大写字符开头并且
- 具有描述性。
"test"
两者都不是。