0
Я создал Java-апплет.Java-апплет не отображается правильно
<applet code=gui.clientGUI.MyApplet.class
archive="QTminer.jar"
width=400 height=200>
</applet>
моя баночка выглядит следующим образом:
это мой простой код:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
public class MyApplet extends JApplet {
public void init() {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
initUI();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private void initUI() {
getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
JButton btnStartApplication = new JButton("Start Application");
btnStartApplication.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SS oi = new SS();
oi.setVisible(true);
}
});
getContentPane().add(btnStartApplication);
}
}
class SS extends JWindow {
private JLabel lblNewLabel;
private JLabel label;
public SS() {
setBounds(new Rectangle(0, 0, 883, 590));
setLocationRelativeTo(null);
getContentPane().setLayout(null);
lblNewLabel = new JLabel("Welcome", SwingConstants.CENTER);
lblNewLabel.setForeground(Color.RED);
lblNewLabel.setFont(new Font("Segoe UI", Font.BOLD | Font.ITALIC, 24));
lblNewLabel.setBounds(0, 313, 883, 41);
getContentPane().add(lblNewLabel);
label = new JLabel(new ImageIcon(getClass().getResource("/gui/resources/Qtminer_background.jpg")));
label.setBounds(0, 0, 883, 592);
getContentPane().add(label);
setVisible(true);
}
}
Моя проблема заключается в том, что при работе в затмении все работает, но при работе в браузер. Я получаю исключение NullPointerException прямо на загрузку значка изображения:
label.setIcon(new ImageIcon(getClass().getResource("/gui/resources/Qtminer_background.jpg")));
Я думаю, вы не можете ожидать появления JWindow (в браузере), который работает независимо от JApplet ... Это тоже было бы очень недружелюбным пользователем. Почему бы вам просто не сделать все внутри одного JApplet? - Удалите предыдущую панель и добавьте новую. Кстати, может быть, вы получите лучшую помощь, чем мой комментарий, если вы опубликуете [mcve]. Вам просто нужно показать нам компилируемый пример, который запускает новый JWindow после нажатия кнопки внутри JApplet. –
Не уверен, что это причина вашей проблемы, но вы должны заменить спин-петли наподобие 'while (object.showable == false);' с [wait] (http://docs.oracle.com/javase/8 /docs/api/java/lang/Object.html#wait--)/[notify](http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify- -) или с помощью [CountDownLatch] (http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html). – VGR
Я попробую, но если вы хотите, вы можете попробовать скомпилировать этот код, он полностью компилируется. –