MapTile
extendsというクラスがあります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 倍の時間がかかります。