java - JPanel 忘记了它的位置

标签 java swing jpanel

我有一个应该定位的 JPanel。我尝试在面板构造函数中使用 setBounds,但它不起作用。当我调用paintComponent时,似乎忘记了边界。

public class Panel extends JPanel {

    public Panel() {

        setBounds(120,100,20,300);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        // Prints out (0,0)
        System.out.println("Location: " + getLocation());
        g.drawOval(0,0, 60, 60);
    }

}

最佳答案

在 Swing 中,组件的位置很少由组件本身决定。通常由 LayoutManager 确定容器的(反过来又受到其自己容器的布局管理器的影响)。

基本原理是,视觉定位不是一种“分而治之”类型的 Activity :一个组件的定位会影响其他组件的定位,因此您需要某种“中央定位权限”,又名:布局管理器。

关于java - JPanel 忘记了它的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762878/

相关文章:

java - 使用键作为字符串序列化和反序列化映射

java - MySQL 安装程序显示 ".NET framework needed",我该如何安装 MySQL?

java - 获取特定 JTable 单元格中的前景(字体)

java - JPanel 布局未按预期呈现

java - Eclipse 未部署引用的库

java - 具有空集合的每个循环的 Activity 多实例

java - 如何确定远程桌面 Swing 应用程序中的字体宽度(以像素为单位)

java - 格式化 JLabel/JTextField 文本?

java - ArrayList<JPanel> 计算器 GUI 的 NullPointerException

java - 查看是否选中所有复选框的快速方法