请参阅底部的更新!
几天来我一直试图弄清楚如何做到这一点,但到目前为止我还没有运气。
Basically what I want to do is have a combobox, which when an option is selected loads an applet, and passes a value to the applet. 这是 ComboBox 类的代码,它应该在新窗口中打开另一个类。另一个类是applet 的主类。它们都在同一个项目中,但在不同的包中。我知道其余代码没有任何错误。
//where I evaluate the selection and then open SteadyStateFusionDemo
// more selections just showing one code block
combo.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent ie){
String str = (String)combo.getSelectedItem();
if (str.equals("NSTX")) {
machine = "A";
JFrame frame = new JFrame ("MyPanel2");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
SteadyStateFusionDemo d = new SteadyStateFusionDemo();
frame.getContentPane().add (new SteadyStateFusionDemo());
d.init();
frame.pack();
frame.setVisible (true);
这里只是为了涵盖所有内容,是 SteadyStateFusionDemo 的 init() 方法的开头以及类中的 main 方法。否则发布的代码太多。在 init 方法之前有几个不同的私有。
//method that initializes Applet or SteadyStateFusionDemo class
public void init() {
//main method of the SteadyStateFusionDemo class
public static void main (String[] args) {
JFrame frame = new JFrame ("MyPanel");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add (new SteadyStateFusionDemo());
frame.pack();
frame.setVisible (true);
我究竟做错了什么?为什么我的课没有加载?
更新:更改了代码,以便打开 JFrame,然后在其中加载 JApplet。我已经在一个测试 Java 小程序中成功地做到了这一点,但由于某些奇怪的原因,它不能与这个小程序一起使用。我什至以类似的方式设置了测试(代码实际上是相同的,除了使用不同的类名,当然还有更短的 init() 方法)。有人可以帮我弄清楚为什么这不起作用吗?此外,如果我删除引用 SteadyStateFusionDemo 的行,则会打开一个 JFrame,但一旦我引用它就不起作用。为什么会这样?