我有一个应该定位的 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/