2

問題の解決策については、このリンクを参照してください

リストでオプションを選択すると、カスタム設定でアプレットをロードするドロップダウンリストがあるプロジェクトを実行しています。アプレットのメイン クラスの名前は SteadyStateFusionDemo です。ClassLoader を使用する必要があることはわかっているので、なぜこれほど問題が発生するのかわかりませんが、率直に言って、これを行う方法がわかりません。

これが私のドロップダウンリストのコードです。リストのオプションから他のクラスにリンクしたい。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.ClassLoader;
import ssfd.SteadyStateFusionDemo;

//**Creates Drop down Menu where choices show up in the box next to it//
//After one of these is selected, it loads the SteadyStateFusionDemo class//
//It also transmits a variable to the VariableStorage class, so that those//
//values can be used in operating the Tokamak.**//
public class ComboBox{
   JComboBox combo;
   JTextField txt;
   public static void main(String[] args) {
      ComboBox b = new ComboBox();
   }

   public ComboBox(){
        String course[] = {"NSTX","LTX","ITER"};
        JFrame frame = new JFrame("Creating a JComboBox Component");
        JPanel panel = new JPanel();
        combo = new JComboBox(course);
        combo.setBackground(Color.gray);
        combo.setForeground(Color.red);
        txt = new JTextField(10);
        panel.add(combo);
        panel.add(txt);
        frame.add(panel);
        combo.addItemListener(new ItemListener(){
        public void itemStateChanged(ItemEvent ie){
          String str = (String)combo.getSelectedItem();

     //Where the ItemListener interprets the choice, and then loads the SteadyStateFusionDemo class.

              if (str == "NSTX") {
                txt.setText("A");
          //loads SteadyStateFusionDemo, NSTX version

      }
              if (str == "ITER") {
              txt.setText("B");
             //loadsSteadyStateFusionDemo, ITER version




      }
              if (str == "LTX") {
              txt.setText("C");
              //loads SteadyStateFusionDemo, LTX version

      }

この後も続きがありますが、質問とは関係ありません。

誰かが2つのクラスをリンクする方法を理解するのを手伝ってくれますか? 2 番目のクラスは別のパッケージにあり、静的メソッドを使用しません。解決策を見つけるために実際にインターネット全体を調べましたが、残念ながら運がありません。:(

4

1 に答える 1

0

次の例のように、Class.forName を使用してクラスを動的にロードできます。これで問題は解決しますか?

Class<?> clazz = Class.forName("ssfd.SteadyStateFusionDemo");
SteadyStateFusionDemo ssfd = clazz.newInstance();
于 2013-05-31T19:04:57.333 に答える