0

私のプログラム-a-には、が取り込まれたaがありJAppletます。ユーザーは、特定の数のアイテムを選択し、a を押して選択を終了したことを示すことができます。次に、イベント ハンドラーで選択した項目を.JListDefaultListModelJButtonActionPerformedJButton

が押される前にアイテムが選択されていない限り、これはうまく機能します。JButton何も選択されていない場合、私の残りの指示ActionPerformedも動作しません。myJList.isSelectionEmpty()負のif条件として試してみましたが、取得した配列の長さmyJList.getSelectedIndices()を0と比較しましたが、どちらも機能しません。

ただし、何かが最初にクリックされてから選択解除された場合 (選択を解除するボタンがあります)、それは機能し、その後プログラムを介して毎回機能するため、トリガーする必要があるのは初めてのようです。

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

私があなたのことをよく理解していれば、これが 1 つの解決策になるかもしれません。

最初に、JButton を無効にします。次に、JList に ListSelectionListener を提供します。このイベント ハンドラー内で、選択が行われたかどうか (少なくとも 1 つの項目が選択されているかどうか) を確認します。そうである場合 - JButton を有効にします。それ以外の場合は無効にします。このようにして、アイテムが選択されていない場合、JButton の ActionEvent ハンドラの実行を防止します。JList が lstChoices で、JButton が btnSubmit であるとします。これにより、上記のことが行われます。

lstChoices.addListSelectionListener(new ListSelectionListener() {
        @Override
        public void valueChanged(ListSelectionEvent e)
        {
            if(lstChoices.getSelectedValuesList().size() > 0)
            {
                btnSubmit.setEnabled(true);
            }
            else
            {
                btnSubmit.setEnabled(false);
            }
        }
    });
于 2012-08-23T23:47:10.523 に答える