我试图画出我的" Zone"扩展JLabel的类。我不明白为什么这不起作用,我在网站上搜索,但我没看到出了什么问题
这是我的代码:
我的董事会课程
public class Board extends JPanel {
private List<Zone> zones = new ArrayList<Zone>();
public Board() {
zones.add(new Zone(1, false, true, dalle1C, null, "/zone1D1C.jpg", 0, 0, this));
zones.add(new Zone(2, false, false, dalle1C, null, "/zone2D1C.jpg", 150, 0, this));
zones.add(new Zone(3, false, false, dalle1C, null, "/zone3D1C.jpg", 300, 0, this));
zones.add(new Zone(4, true, false, dalle1C, null, "/zone4D1C.jpg", 0, 150, this));
zones.add(new Zone(5, false, false, dalle1C, null, "/zone5D1C.jpg", 300, 150, this));
zones.add(new Zone(6, true, false, dalle1C, null, "/zone6D1C.jpg", 0, 300, this));
zones.add(new Zone(7, true, false, dalle1C, null, "/zone7D1C.jpg", 150, 300, this));
zones.add(new Zone(8, false, false, dalle1C, null, "/zone8D1C.jpg", 300, 300, this));
zones.get(1).addConnexion(connexion);
connexion = new PassageGD(zones.get(1), zones.get(2), false, false);
zones.get(1).addConnexion(connexion);
connexion = new PassageHB(zones.get(2), zones.get(4), false, false);
zones.get(4).addConnexion(connexion);
connexion = new PassageGD(zones.get(3), zones.get(4), false, false);
zones.get(4).addConnexion(connexion);
connexion = new PassageHB(zones.get(4), zones.get(7), false, false);
zones.get(4).addConnexion(connexion);
connexion = new PassageHB(zones.get(3), zones.get(6), false, false);
zones.get(6).addConnexion(connexion);
connexion = new PassageGD(zones.get(5), zones.get(6), false, false);
zones.get(6).addConnexion(connexion);
connexion = new PassageHB(zones.get(3), zones.get(5), false, false);
zones.get(5).addConnexion(connexion);
}
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
setBackground(Color.BLACK);
for (Zone zone : zones) {
this.add(zone);
}
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
我的Zone类:
public class Zone extends JLabel implements ActionListener {
...
...
public Zone(Integer id, boolean piece, boolean egout, Dalle[] dalles, List<Connexion> connexions, String image_name, Integer x, Integer y, Board board) {
zone = this;
addMouseListener(new TAdapter());
this.board = board;
if(connexions != null) {
this.connexions = connexions;
for(Connexion connexion : connexions) {
connexion.getOtherZone(this).addConnexion(connexion);
}
}
ImageIcon ii = new ImageIcon(this.getClass().getResource(image_name));
this.x = x;
this.y = y;
this.x_end = x + image.getWidth(null);
this.y_end = y + image.getHeight(null);
this.setBorder(null);
this.setIcon(ii);
this.setText(null);
this.setVisible(true);
}
答案 0 :(得分:3)
paint
,你已经打破了油漆链,这将影响面板绘制它的孩子的能力。覆盖paintComponent
并在执行任何自定义绘制之前调用super.paintComponent
Graphics
上下文,这可能会阻止其他组件被绘制。paint
方法中添加组件,可以快速连续并随机调用这些方法。而是在构造函数中添加组件