Имеется сей код:
package labwork1;
import java.applet.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.scene.shape.MoveTo;
import javax.swing.event.*;
/**
*
* @author xred
*/
public class Combi extends Applet{
private boolean m_fStandAlone = false;
int curX = 50, curY = 50;
static boolean keyWasPressed = false;
MouseInputAdapter p;
KeyAdapter pk;
Image image;
public String m_FileName = "simple.jpeg";
private final String PARAM_String_1 = "fileName";
public Combi() {
p = new MouseInputAdapter() {
public void mousePressed(MouseEvent e){
keyWasPressed = true;
curX = e.getX();
curY = e.getY();
repaint();
}};
this.addMouseListener(p);
pk = new KeyAdapter() {
public void keyPressed(KeyEvent e){
int keyCode = e.getKeyCode();
keyWasPressed = true;
switch(keyCode){
case KeyEvent.VK_DOWN:
curY += 5;
repaint();
break;
case KeyEvent.VK_UP:
curY -= 5;
repaint();
break;
case KeyEvent.VK_RIGHT:
curX += 5;
repaint();
break;
case KeyEvent.VK_LEFT:
curX -= 5;
repaint();
break;
}
}
};
this.addKeyListener(pk);
image = null;
}
@Override
public void init(){
if (m_fStandAlone = false){
String param;
param = getParameter(PARAM_String_1);
if (param != null) m_FileName = param;
}
resize(600, 600);
}
public void start(){
try {
URL url = Paths.get("/home/xred/").toUri().toURL();
image = getImage(url, m_FileName);
} catch (MalformedURLException ex) {
Logger.getLogger(Combi.class.getName()).log(Level.SEVERE, null, ex);
}
}
public String[][] getParameterInfo() {
String[][] info ={{ PARAM_String_1, "fileName", "name of file" },};
return info;
}
public void paint(Graphics g){
if (keyWasPressed)
g.drawImage(image, curX, curY, this);
}
public static void main(String[] args) {
Frame fr = new Frame("Апплет двойного назначения");
Combi c = new Combi();
c.m_fStandAlone = true;
if (args.length != 0)
c.m_FileName = args[0];
c.init();
fr.add(c);
fr.setSize(600, 600);
fr.setVisible(true);
//fr.getToolkit().getImage(m_FileName);
fr.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}});
}
}
Если запускать через Web Start, т.е только апплет - все в порядке. При попытке же запускать как приложение вылетает ошибка :
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getAppletContext(Applet.java:204)
at java.applet.Applet.getImage(Applet.java:276)
at java.applet.Applet.getImage(Applet.java:298)
at labwork1.Combi.start(Combi.java:88)
at labwork1.Combi.main(Combi.java:113)
Прошу помощи!
Когда класс Combi
запускается из метода main
, контекст выполнения апплета не существует, а метод Applet.getImage() пытается его получить. Попробуйте вместо него использовать метод Toolkit.getImage():
public class Combi extends Applet {
private final Toolkit toolkit;
...
public Combi() {
toolkit = Toolkit.getDefaultToolkit();
...
}
...
public void start() {
try {
URL url = Paths.get("/home/xred/" + m_FileName).toUri().toURL();
image = toolkit.getImage(url);
} catch (MalformedURLException ex) {
Logger.getLogger(Combi.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть txt файл, в нем находятся слова, целые числа и дробные вперемешкуПодскажите, пожалуйста, как вытянуть оттуда только дробные числа?
Здравствуйте, у меня такой вопрос, как создать в программе текстовый файл, который после запуска появится в той директории в которой, открыл...
Столкнулся с таким вот свойством сложенияУ нас есть две переменные:
Добрый деньКак сделать типичный Logo quiz app, чтобы при нажатий на буквы textview заполнялся и проверял ответ