Java 在JFrame中引用JPanel的坐标

Java 在JFrame中引用JPanel的坐标,java,swing,jframe,jpanel,contentpane,Java,Swing,Jframe,Jpanel,Contentpane,嗨,我在JFrame中引用JPanel的源代码时遇到了问题。我的JPanel是这样设置的,在构造函数中,我想在JPanel的左边缘添加一行 table = new JPanel(); table.setBackground(Color.green); table.setBounds(10,10, 600, 600); table.setSize(width.getValue(), height.getValue());

嗨,我在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);                                     
然后绘画方法

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)获取,但将其作为一个整体应用于JFrame,而不是contentPane。我不完全理解contentPane,但我认为add()会添加到contentPane中,从那时起,您只会引用contentPane中的坐标……我不明白为什么setBounds()会在我想要的位置添加JPanel,它只与contentPane相关(10,10),但当我绘制()时它似乎获取了与contentPane相关的坐标,但绘制了与JFrame相关的坐标。我意识到我可以添加一个值来降低生产线,但我怀疑这是一个糟糕的解决方案


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

您应该在
JPanel.paintComponent()中重写并进行绘制。结帐


不确定使用
setbounds()
的原因是什么,您是否正在尝试使用您的组件?我建议您熟悉java布局,这是一个很好的开始

好的,这是有道理的…是的,这就是我使用设置边界的原因…我在布局方面遇到了问题,不想陷入其中,因为这是一个学校项目,但我计划在它运行后找出它们“我计划在它运行后找出它们”您的GUI只有在您完成后才能正常工作。@AndrewThompson我昨晚好不容易才发现:)看来我学习布局管理器的时间比计划的要早