0

MapTileextendsというクラスがありますJLabel。私がやっていることは、GridLayout に多くの MapTile を含む JPanel をロードすることです。100x100 の MapTile をロードすると、100x100 の JLabel をロードするよりもプロセスに時間がかかることに気付きました。これは以下の私のMapTileクラスです。

public class MapTile extends JLabel {
private static final long serialVersionUID = 1L;
private boolean selected;
private Point location;

public MapTile(){
    super();
    location = new Point();
}
public void setLocation(int x, int y){
    setLocation(new Point(x,y));
}
public void setLocation(Point p){
    location = p;
}
public Point getLocation(){
    return location;
}
public void setSelected(Boolean b){
    selected = b;
    if (selected){
        ((GridPanel)this.getParent()).addToSelection(this);
        this.setBorder(BorderFactory.createLineBorder(Color.RED));
    } else {
        this.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    }
    this.repaint();
}
public boolean isSelected(){
    return selected;
}
}

特別なことは何もありません。setLocation メソッドを上書きし、他のいくつかのメソッドを追加しただけです。また、インスタンス変数を 3 つだけ追加しました。

クラスを拡張すると、対処する余分な重みがたくさん発生しますか?

私のMapTileクラスはかなり単純だと思わざるを得ませんが、100x100 の MapTile をロードする時間と 100x100 の JLabel をロードする時間は大きく異なります。MapTile を大量にロードするには、JLabels よりも約 4 ~ 5 倍の時間がかかります。

4

1 に答える 1