У меня есть класс, который расширяет JPanel, и я хочу добавить некоторые метки (фактически класс, который расширяет JLabel) на нем.Расположение этой панели в нуле.Я установил размер и расположение моей метки, но проблема в том, что я не вижу ее в правильном месте :( Я напечатал getComponentAt (....). getClass (). getName () в консоли, чтобыПосмотрите, что действительно существует в этом месте и получил правильный ответ (я имею в виду, что getComponent говорит, что в том месте, где я его добавил, есть ярлык, но проблема в том, что я вижу свой ярлык в позиции (0,0), что неверно): -S я не могу найти ошибку в своем коде: - / Любая помощь приветствуется, спасибо заранее. :) Это соответствующая часть моего кода:
public class ServerViewManager extends JPanel implements Serializable {
private ArrayList<String> map;
// *tankview extends JLabel
private ArrayList<TankView> tanks = new ArrayList<TankView>();
private ArrayList<BulletView> bullets = new ArrayList<BulletView>();
private int rows;
private int columns;
public ServerViewManager(ArrayList<String> map) {
super(null);
this.map = map;
rows = map.size();
columns = map.get(0).length();
for (int i = 0; i < map.size(); i++) {
for (int j = 0; j < map.get(i).length(); j++) {
if (map.get(i).charAt(j) == 'i')
add(new IceBlock(i, j));
else if (map.get(i).charAt(j) != 'g')
add(new Block(map.get(i).charAt(j), i * 50, j * 50));
}
}
}
public void paintComponent(Graphics g) {
g.drawImage(Resources.GROUNDBLOCK.getImage(), 0, 0, columns * 50,
rows * 50, this);
}
//************************************************
// Here is where i wanna put the label
public void addTank(Color color, int xpos, int ypos) {
tanks.add(new TankView(color, xpos, ypos));
if (iceBlock(xpos, ypos)) {
IceBlock ice = (IceBlock) this.getComponentAt(ypos * 50, xpos * 50);
ice.putItem(color + "1");
} else
this.add(tanks.get(tanks.size() - 1));
repaint();
}
и вот мой ярлык:
public class TankView extends JLabel implements Serializable{
private int xpos;
private int ypos;
private char direction;
private int directionNum;
private Color color;
public TankView(Color color, int x, int y) {
xpos=x;
ypos=y;
direction='u';
directionNum=1;
setLocation(ypos *50, xpos*50);
setSize(50, 50);
setOpaque(false);
setVisible(true);
this.color=color;
if (color==Color.Blue)
setIcon(Resources.BlueTank1);
else if (color==Color.Green)
setIcon(Resources.GreenTank1);
else if (color==Color.Red)
setIcon(Resources.OrangeTank1);
else if (color==Color.Yellow)
setIcon(Resources.PinkTank1);
repaint();
}