-1

Java を使用して、デスクトップ用の小さな暗号化アプリを作成しています。

LinuxでOracle JDeveloper 11gでJFrames(javax.swing.JFrameをインポート)を使用しています。

ユーザーが暗号化方法を選択できる「ウェルカム」フォーム/フレームが必要です。次に、方法を選択すると、選択した暗号化方法に適したフォームを動的に作成し、また、ウェルカムフォーム。ユーザーが暗号化を終了したら、フレーム/フォームを閉じる必要があります (右上の x をクリックするか、[終了] ボタンを使用するか、任意の方法で)、ウェルカム フレームが動的に再作成されて表示されます。

私はさまざまなことを試しました-btnEncode_actionPerformed(ActionEvent e)、次にthis.dispose()-そして、this_windowClosed(WindowEvent e)とdispose()をいじりましたが、何も機能していないようです。

setVisibl(true/false) を使用した回避策でさえ、この段階では受け入れられます - これは一日中私の頭を悩ませてきました. Delphi で行うのは非常に簡単です。

TIAとrgs、

ポール...

4

2 に答える 2

0

このようなものは通常トリックを行います:(私はこれをテストしていないことに注意してください)

public class WelcomeMsg extends JFrame
.
.
.
public void btnContinue_actionPerformed(ActionEvent e)
{
    this.dispose();
    SwingUtilities.invokeLater(new Runnable(){ new JFrameAppropriateWindow(args) });
}

ここで、btnContinueはウェルカムフォームの[続行]ボタンであり、JFrameAppropriateWindowは、ユーザーの選択に応じて表示する次のフレームです。引数は、渡す必要のある引数です。

準備ができたら、現在のフレームを破棄して、WelcomeMsgのインスタンスを再起動するだけです。

于 2010-10-08T18:29:55.690 に答える
0

ユーザーの選択に応じてパネルを作成および表示するためのこの簡単な例をまとめました。

public class Window extends JFrame {

public Window() {
    this.setLayout(new BorderLayout());
    JComboBox encryptionCombobox = new JComboBox();
    encryptionCombobox.addItem("foo");
    encryptionCombobox.addItem("bar");
    //...
    encryptionCombobox.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            // find choices and the correct panel
            JPanel formPanel = new JPanel();
            formPanel.setOpaque(true);
            formPanel.setBackground(Color.RED);
            //...
            Window.this.add(formPanel, BorderLayout.CENTER);
            Window.this.validate();
            Window.this.repaint();
        }
    });
    add(encryptionCombobox, BorderLayout.NORTH);
}

public static void main(String[] args) {
    new Window().setVisible(true);
}
}

考えてみると、おそらく代わりに CardLayout を使用する必要があります。これにより、異なるパネル (カード) を切り替えることができます。

于 2010-10-08T18:49:22.447 に答える