gpt4 book ai didi

java - 在 JFrame 中引用 JPanel 的坐标

转载 作者:行者123 更新时间:2023-11-30 09:38:12 26 4
gpt4 key购买 nike

您好,我无法在我的 JFrame 中引用 JPanel 的来源。我的 JPanel 在构造函数中是这样设置的,我想在 JPanel 的左边缘添加一行。

table = new JPanel();                    
table.setBackground(Color.green);
table.setBounds(10,10, 600, 600);
table.setSize(width.getValue(), height.getValue());
add(table);

然后是paint方法...

public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)g;
g2d.drawLine(table.getX(), table.getY(), table.getX(), (table.getY() + table.getHeight()));
g2d.drawLine(100, 100, (int)Math.round(cueBall.getPositionX()), (int)Math.round(cueBall.getPositionY()));
}

paint 方法中的最后一个命令与我的问题无关...该代码似乎将原点作为 (10, 10) 获取,但将其作为一个整体而不是 contentPane 应用于 JFrame。我不完全理解 contentPane 但我认为 add() 添加到内容 Pane ,从那时起你只引用 contentPane 的坐标......我只是不明白为什么 setBounds() 在我的地方添加了 JPanel想要它是 (10,10) 仅与 contentPane 相关,但是当我 paint() 它似乎获得与 contentPane 相关的坐标,但绘制那些引用 JFrame 的坐标。我意识到我可以只添加一个值来将线向下移动,但我怀疑这是一个糟糕的解决方案。

我是否需要添加一个带有自己的 paint() 方法或类似方法的 contentPane?

最佳答案

您应该覆盖并在 JPanel.paintComponent() 中进行绘制。结帐Painting in AWT and Swing .

不确定使用 setbounds() 的原因是什么,您是否尝试使用 absolute positioning你的组件?我建议熟悉 java 布局,这是一个好的开始 - A Visual Guide to Layout Managers .

关于java - 在 JFrame 中引用 JPanel 的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216554/

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