Java 画布绘制方法不适用于JLayeredPane
我一直在尝试使用JLayeredPane在JFrame中创建两层图像,但是我无法在Canvas类中使用paint()函数绘制形状。 以下是我写的:Java 画布绘制方法不适用于JLayeredPane,java,swing,jframe,Java,Swing,Jframe,我一直在尝试使用JLayeredPane在JFrame中创建两层图像,但是我无法在Canvas类中使用paint()函数绘制形状。 以下是我写的: package com.baduk.main; import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.ImageIcon; import javax.swing.J
package com.baduk.main;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class Game extends Canvas implements Runnable {
private ImageIcon icon;
private JLabel back;
private JLayeredPane layer;
/**
*
*/
private static final long serialVersionUID = -3441156857004256039L;
public Game() {
//Background image with depth 0
icon = new ImageIcon("C:/Users/scaraven/Downloads/baduk_board.png");
back = new JLabel(icon);
back.setBounds(0,0,icon.getIconWidth(),icon.getIconHeight());
//Create JFrame
JFrame frame = new JFrame("BADUK");
frame.setSize(new Dimension(icon.getIconWidth()+5,icon.getIconHeight()+25));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
//Create JLayeredPane
layer = new JLayeredPane();
layer.add(back,new Integer(1));
layer.add(this,new Integer(0));
frame.setContentPane(layer);
frame.setVisible(true);
}
public static void main(String[] args) {
new Game();
}
@Override
public void run() {
// TODO Auto-generated method stub
}
public void paint(Graphics g) {
g.setColor(Color.black);
g.fillRect(10, 10, 100, 100);
}
}
根据我写的,一个Jframe应该以一个图像作为背景,在顶部有一个黑色的矩形,但是我只得到图像。有人知道我写的代码有什么问题,我需要修改什么吗?画布是重量级的;Swing组件是轻量级的。使用JPanel代替画布,并重写其
paintComponent
方法而不是paint。看。我想你需要设置自定义图层的边界。您可能应该首先在没有背景图像图标的情况下进行调试,以确保您没有在顶部进行绘制。官方的JLayeredPane教程没有问题。画布很重;Swing组件是轻量级的。使用JPanel代替画布,并重写其paintComponent
方法而不是paint。看。我想你需要设置自定义图层的边界。您可能应该首先在没有背景图像图标的情况下进行调试,以确保您没有在顶部进行绘制。官方的JLayeredPane教程没有问题。