如何告诉 paint 方法只在 JPanel 上绘制背景,而不是在整个 JFrame 上绘制背景。 我的 JFrame 大小比 JPanel 大。当我尝试为 JPanel 绘制网格背景时,网格似乎被绘制在整个 JFrame 而不仅仅是 JPanel 上。
部分代码:
public class Drawing extends JFrame {
JPanel drawingPanel;
...........
public Drawing (){
drawingPanel = new JPanel();
drawingPanel.setPreferredSize(new Dimension(600,600));
}
public void paint(Graphics g)
{
super.paintComponents(g);
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
paintBackground(g2); //call a METHOD to paint the for JPANEL
}
private void paintBackground(Graphics2D g2)
{
g2.setPaint(Color.GRAY);
for (int i = 0; i < drawingPanel.getSize().width; i += 300)
{
Shape line = new Line2D.Float(i, 0, i, drawingPanel.getSize().height);
g2.draw(line);
}
for (int i = 0; i < drawingPanel.getSize().height; i += 300)
{
Shape line = new Line2D.Float(0, i, drawingPanel.getSize().width, i);
g2.draw(line);
}
} //END private void paintBackground(Graphics2D g2)
}
最佳答案
如果您想在 JPanel 上进行绘画,则覆盖 JPanel,而不是 JFrame。
您应该覆盖 JPanel 的 paintComponent() 方法。阅读 Custom Painting 上的 Swing 教程部分一个工作示例。
关于java - 绘制 JPanel 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987976/