У меня есть класс под названием MapTile
, который расширяет JLabel
. То, что я делаю, загружает JPanel с большим количеством MapTile в GridLayout. Я замечаю, что при загрузке в 100x100 MapTile процесс занимает больше времени, чем загрузка в 100x100 JLabel. Это мой класс MapTile
.Расширенные классы в java, насколько они громоздкие?
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 и добавил несколько других методов. Я также добавил только три переменные экземпляра.
Мой вопрос заключается в следующем: расширяет ли класс класс кучу лишнего веса?
Я не могу не думать, что мой класс MapTile
довольно прост, но время между загрузкой 100x100 MapTile и загрузкой 100x100 JLabel's сильно отличается. Для загрузки MapTile в больших количествах требуется около 4-5 раз больше, чем JLabels.
Так что проблема в том, что я действительно _am_ делаю свой расширенный класс громоздким и медленным? Редактировать: Конечно! Я удалил переменную экземпляра Point только для просмотра, а производительность значительно улучшилась. Спасибо :) –
@ LucasMorgan Исправить. Рад, что вы можете проверить это в своем коде – Robin