gpt4 book ai didi

java - JLabel 未显示在框架中

转载 作者:行者123 更新时间:2023-11-30 02:56:33 25 4
gpt4 key购买 nike

我正在尝试使用以下类作为简单乒乓球游戏的 Racket

 public class Racket extends JLabel{
int up, down;
int x, y;

public Racket(int up, int down, int x, int y){
this.setBackground(Color.BLACK);
this.setForeground(Color.BLACK);
this.up = up;
this.down = down;
this.x = x;
this.y = y;
setLocation(x,y);
setOpaque(true);
}
}

当我通过

将 Racket 添加到主框架时
p1 = new Racket(KeyEvent.VK_W, KeyEvent.VK_S, 0, (windowSize.height/2)-10);
window.add(p1);

Racket 没有出现,有人能指出问题所在吗?

容器只是一个简单的 JFrame,没有布局管理器

window = new JFrame("Ping Pong");
window.setSize(500, 500);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(null);

最佳答案

这就是你的问题:

window.setLayout(null);

当您使用 null 布局时,您对完整布局(包括所有添加的组件的大小和位置)负全部责任,并且在您的代码中,当您设置 JLabel 的位置时,您不' t 设置尺寸。正确的解决方案不是设置其大小,而是避免使用空布局。虽然 null 布局和 setBounds() 对于 Swing 新手来说似乎是创建复杂 GUI 的最简单、最好的方法,但创建的 Swing GUI 越多,使用它们时遇到的困难就越严重。当 GUI 调整大小时,它们不会调整组件的大小,它们是增强或维护的皇家女巫,放置在滚动 Pane 中时它们完全失败,在所有平台或与原始分辨率不同的屏幕分辨率上查看时,它们看起来非常糟糕.

关于java - JLabel 未显示在框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com