我试图通过paintComponent将一个ImageIcon添加到面板,但它不起作用。我试图将它添加到的面板设置为GridLayout。这可能是为什么?还是正在被拖延?或者我的路径可能设置不正确......我从来ImageIcon没有绘制面板
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame implements MouseListener, KeyListener {
JFrame f = new JFrame();
JPanel p = new JPanel();
JPanel[][] panel = new JPanel[10][10];
int k = 1;
Color previous;
ImageIcon icon = new ImageIcon("/Users/Admin/Desktop/stickFigure.jpg");
static String title = "Grid World";
public Frame(String s) {
f.setTitle(s);
p.setLayout(new GridLayout(10, 10));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
panel[i][j] = new JPanel();
p.add(panel[i][j], i, j);
panel[i][j].addMouseListener(this);
panel[i][j].setBackground(Color.WHITE);
}
}
p.setSize(500, 500);
f.add(p);
f.setSize(490, 492);
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(3);
f.addKeyListener(this);
f.setLocationRelativeTo(null);
}
public void paintComponent(Graphics g) {
icon.paintIcon(f, g, 100, 100);
}
不,组件的布局与您的问题无关。至于你的问题的原因,在这一点上,这是任何人的猜测。这可能是因为您将不透明组件添加到JPanel中,但是又一次,谁知道。如果你仍然需要我们的帮助,考虑给我们更多的信息,这样就不必猜测你在做什么。作为一般指南,问你的问题,就好像你是那个必须回答它并且不知道提问者代码的人。从我们的角度考虑事情。 –
你的类'Frame'不是一个组件,所以'paintComponent()'不会被调用。 – tenorsax
同意。你可以注释掉for循环并尝试运行你的代码。面板不透明可能会隐藏您的图像。如果一个背景是你所需要的,可能是[this](http://stackoverflow.com/questions/2545214/how-to-set-a-transparent-background-of-jpanel)线程将帮助 – javatarz