Новичок здесь, простите меня.Невозможно вызвать метод родительского класса из дочернего класса с помощью значка в трее
Это мой код:
Родитель/Основной/JFrame:
public class Home extends javax.swing.JFrame {
public Home() {
initComponents();
setIcon("icon"); // set the taskbar icon
}
public static void main(String args[]) {
// main code here, including tray initialization
new Home().setVisible(true);
}
public void start() {
// code here
}
}
Детский класс:
public class Tray extends Home {
static TrayIcon trayIcon;
private static void ShowTrayIcon(String status) {
if (!SystemTray.isSupported()) {
System.out.println("Tray not supported");
System.exit(0);
return;
}
final PopupMenu popup = new PopupMenu();
final SystemTray tray = SystemTray.getSystemTray();
trayIcon = new TrayIcon(CreateIcon("/Images/off.png", "desc"));
MenuItem StartItem = new MenuItem("Start");
popup.add(StartItem);
trayIcon.setPopupMenu(popup);
// open from tray
StartItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
start();
}
});
try {
tray.add(trayIcon);
} catch (AWTException e) {
}
}
protected static Image CreateIcon(String path, String desc) {
URL ImageURL = Tray.class.getResource(path);
if (ImageURL == null) {
System.err.println("Resource not found: " + path);
return null;
} else {
// System.err.println("Resource found: " + path);
return (new ImageIcon(ImageURL, desc)).getImage();
}
}
public void start() {
super.start();
}
}
начало() метод в классе ребенок работает, но когда я пытаюсь чтобы вызвать это из actionlistener лотка, он продолжает говорить, что «статический метод start() не может ссылаться на статический контекст».
Пробовал использовать super.start() в методе actionlistener, но это тоже не сработает.
Что я пытаюсь сделать; Домашний класс - это мой JFrame и основной класс, у меня есть другой класс, который управляет значками в моем лотке, и получил несколько кнопок в лотке, которые вызывают некоторые методы из основного класса при вызове.
Любая помощь будет оценена по достоинству.