Java 在JFrame中引用JPanel的坐标
嗨,我在JFrame中引用JPanel的源代码时遇到了问题。我的JPanel是这样设置的,在构造函数中,我想在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());
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我昨晚好不容易才发现:)看来我学习布局管理器的时间比计划的要早