Я делаю тестовый код для системы инвентаризации (позже я планирую работать над игрой), используя компоненты Javax. Я делал класс под названием «Курсор», который расширяет «ItemStack», чтобы вы могли «подбирать» предметы, на которые вы нажимаете на экране инвентаря. У меня проблема в том, что я использую статическую переменную 'cur' для хранения экземпляра этого класса, но каждый раз, когда я пытаюсь скомпилировать, я получаю следующую ошибку:
.\john\window\component\ItemSlotPanel.java:13: error: cannot find symbol
itemStack.swapWith(Cursor.cur);
^
symbol: variable cur
location: class Cursor
.\john\window\component\ItemSlotPanel.java:25: error: package itemstack.item doe
s not exist
g.drawImage(itemstack.item.icon.getScaledInstance(this.getWidth(),this.get
Height(),Image.SCALE_SMOOTH),0,0,null);
^
.\john\window\component\InfiniteItemSlotPanel.java:15: error: cannot find symbol
if (Cursor.cur.isEmpty()) {
^
symbol: variable cur
location: class Cursor
.\john\window\component\InfiniteItemSlotPanel.java:16: error: cannot find symbol
this.itemStack.copyTo(Cursor.cur);
^
symbol: variable cur
location: class Cursor
.\john\window\component\InfiniteItemSlotPanel.java:17: error: cannot find symbol
} else if (Cursor.cur.item.id == this.itemStack.item.id) {
^
symbol: variable cur
location: class Cursor
.\john\window\component\InfiniteItemSlotPanel.java:18: error: cannot find symbol
Cursor.cur.count += this.itemStack.count;
^
symbol: variable cur
location: class Cursor
6 errors
что означает, что переменная не существует
Я пытался найти подобные проблемы на этом сайте (а также через Google), но большая часть того, что я нашел, не имеет значения. В StackOverflow я нашел такие вопросы, как Что такое отражение и почему оно полезно?, Функции байт-кода, недоступные в языке Java, и Преимущества прототипного наследования по сравнению с классическим.
Рассматриваемый класс:
package john;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import john.item.*;
import john.window.*;
import john.window.component.*;
public class Cursor extends ItemStack implements MouseListener,MouseMotionListener {
public static Cursor cur = new Cursor();
public Cursor() {
super(null);
}
public static Cursor getCursor() {
return cur;
}
public void mouseClicked(MouseEvent e) {
Object source = e.getSource();
if (source instanceof InfiniteItemSlotPanel) {
((InfiniteItemSlotPanel) source).mouseClicked(e);
} else if (source instanceof ItemSlotPanel) {
((ItemSlotPanel) source).mouseClicked(e);
}
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
public Cursor addListenerTo(Component x) {
x.addMouseListener(this);
x.addMouseMotionListener(this);
return this;
}
}
ItemStack.java:
package john.item;
public class ItemStack {
public Item item;
public int count;
public ItemStack(Item item) {
this(item,1);
}
public ItemStack(Item item,int count) {
this.item = item;
this.count = count;
}
public boolean isEmpty() {
return this.item == null && this.count == 0;
}
public void check() {
if (this.count < 0) {this.count = 0;this.item = null;}
if (this.item == null && this.count > 0) this.count = 0;
if (this.count == 0 && this.item != null) this.item = null;
}
public void dispose() {
this.item = null;
this.count = 0;
}
public boolean canInsert(ItemStack stack) {
return this.item.id == stack.item.id;
}
public void insert(ItemStack stack) {
if (!canInsert(stack)) return;
this.count += stack.count;
}
public void insertInto(ItemStack dest) {
dest.insert(this);
}
public void copyTo(ItemStack dest) {
dest.item = this.item;
dest.count = this.count;
}
}
Если вам нужно больше кода, чем это, не стесняйтесь спрашивать, я сделаю все возможное, чтобы сжать его, но в настоящее время он состоит из 14 взаимосвязанных классов, поэтому я не знаю, насколько хорошо это будет работать.
Я не уверен, насколько хорошо этот вопрос будет воспринят, но я не знаю, куда еще обратиться. Приношу извинения, если трачу время, но я постарался, чтобы вопрос соответствовал рекомендациям StackOverflow. Приветствуется любой ответ (даже отрицательный). Мне просто очень нужно понять, почему это происходит. В прошлый раз у меня была проблема, похожая на эту, мне пришлось все удалить и переписать, так что любая информация будет отличной! Кроме того, извините за мой плохой английский (я родился и вырос в Америке, но я уже не так часто пишу подобные вещи).
Cursor
в классItemStack
? - person Kon   schedule 18.08.2017java.awt.*
, который также имеет классCursor
. - person Kon   schedule 18.08.2017import java.awt.*
во многих своих классах, так что вполне может быть проблема. Еще раз спасибо! :) - person JHNUXER   schedule 18.08.2017