0

これが私の現在のプログラムです:

import java.applet.Applet;
import java.awt.Graphics;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.JComboBox;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Properties;

public class CodesApplet extends Applet 
{
    private Properties properties;
    private String configFilePath;
    private FileInputStream fis;
    private String driverName;
    private String userName;
    private String password;
    private String url;

    private Connection conn;
    private Statement st;
    private Timestamp created = new Timestamp(System.currentTimeMillis());

    private JComboBox codes1;
    private JComboBox codes2;
    private JComboBox otherCodes;

    public void init() 
    {
        try 
        {
            //Loads the values from the properties file 
            try 
            {
                properties = new Properties();
                configFilePath="C:\\scriptProps.properties";
                fis = new FileInputStream(configFilePath);

                properties.load(fis);

                if (fis != null)
                {
                    fis.close();
                }
            } 
            catch (FileNotFoundException e) 
            {
                System.err.println("init(): FileNotFoundException(): " + e.getMessage());
            }

            driverName=properties.getProperty("driverName");
            userName=properties.getProperty("userName");
            password=properties.getProperty("password");
            url=properties.getProperty("url");

            //Establishes the connection to the database
            System.out.println("init(): loading OracleDriver for applet created at " + created.toString());
            Class.forName(driverName);
            System.out.println("init(): getting connection");
            conn = DriverManager.getConnection(url, userName, password);
            st = conn.createStatement();

            //Instantiates the previously declared variables for the drop-downs.
            codes1 = new JComboBox();
            codes2 = new JComboBox();
            otherCodes = new JComboBox();
        }
        catch (ClassNotFoundException e)
        {
            System.err.println("init(): ClassNotFoundException: " + e.getMessage());
        } 
        catch (SQLException e)
        {
            System.err.println("init(): SQLException: " + e.getMessage());
        } catch (IOException e) 
        {
            System.err.println("init(): IOException. " + e.getMessage());
        }
    }

    public void start() 
    {
        System.out.println("start(): ");
    }

    public void stop()
    {
        System.out.println("stop(): ");
    }

    //Returns the first drop-down...
    public JComboBox getComboBox1() 
    {
        codes1.removeAllItems();
        codes1.addItem("Please Select...");

        try 
        {
            ResultSet rs = st.executeQuery("select codes from myTable");

            while (rs.next()) 
            {
                codes1.addItem(rs.getString("codes"));
            }

            rs.close();
            st.close();
        } 
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }

        return codes1;
    }

    //Returns the second drop-down...
    public JComboBox getComboBox2() 
    {
        codes2.removeAllItems();
        codes2.addItem("Please Select...");

        try 
        {
            ResultSet rs = st.executeQuery("select codes from myTable");

            while (rs.next()) 
            {
                codes2.addItem(rs.getString("codes"));
            }

            rs.close();
            st.close();
        } 
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }

        return codes2;
    }

    //Returns the third drop-down...
    public JComboBox getComboBox3() 
    {
        otherCodes.removeAllItems();
        otherCodes.addItem("Please Select...");

        try 
        {
            ResultSet rs = st.executeQuery("select otherCodes from myTable2");

            while (rs.next()) 
            {
                otherCodes.addItem(rs.getString("otherCodes"));
            }

            rs.close();
            st.close();
        } 
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }

        return otherCodes;
    }

    public void paint(Graphics g)
    {
        System.out.println("paint(): creating the drop-downs...");

        getComboBox1();
        getComboBox2();
        getComboBox3();
    }

    public void destroy() 
    {
        System.out.println("destroy(): closing connection for applet created at " + created.toString());

        try 
        {
            conn.close();
        } 
        catch (SQLException e) 
        {
            System.err.println("destroy: SQLException: " + e.getMessage());
        }
    }
}

基本的に、私がやりたいのは、複数のテーブルからデータをプルし、ドロップダウンボックスにそのデータを入力するこのアプレットを用意することです。1つのドロップダウンでこれを行う方法の例をいくつか見てきました(したがって、codes1を含む1つのreturnステートメントが表示されるのはなぜですか)。

私の主な質問は次のとおりです。

  • 一般的に、私はこれを正しく行っていますか?これは、複数のテーブルから複数のフィールドを取得するための最良の方法ですか?
  • また、これはコンボボックスにのみ入力されることを理解しています。ドロップダウンから適切な値を選択した後(入力後)にユーザーがボタンを押して、それらの値をデータベースの別のテーブルに保存できるようにするには、どうすればよいですか?
4

1 に答える 1

5

アプレットには多くの問題があります。

  • コンボボックスを最上位のコンテナ階層に追加することはありません
  • ユーザー選択の変更を通知したい場合は、JComboBoxes に ActionListener を追加できます。
  • ペイントをオーバーライドしないでください
  • ペイントが呼び出されるたびに、コンボボックスのコンテンツを再作成しています。アプレットの初期化時にコンボボックスを作成して追加する必要があります
  • アプレットは通常、Web ページ/サーバーを介して配布されます。適切なファイルは利用できません。
  • データベースでリモート アクセスが許可されていない限り、これは機能しません。
  • ディスプレイにボタンを追加するには、単純に new JButton("My button") を呼び出してコンポーネント階層に追加します。
  • ...

ここにSwing チュートリアルへのリンクがあります。多くの章があなたを助けることができると思います

于 2012-09-24T20:20:31.787 に答える