1

フォルダディレクトリを設定する名前変更ツールがありますが、いくつかのJCheckBoxを作成し、選択したディレクトリに応じてディレクトリを変更できるようにしたいと考えています。

彼女はチェックボックスのアクションリスナーであり、txtフィールドを編集してプログラム上で正しく表示されるようにしますが、実際にはディレクトリを変更しません。

cbxBlackBerry = new JCheckBox("BlackBerry");
        cbxBlackBerry.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e){
                            if(cbxBlackBerry.isSelected())
                            txtPrefix.setText("x-rimdevice_");
                        else{
                            txtPrefix.setText("");
                        }

                        if(cbxBlackBerry.isSelected())
                            txtDirectory.setText("\\RSASoftToken\\blackberry");
                        else{
                            txtDirectory.setText("");
                        }
                    }
                }
            ); //close addActionListener

これは、ディレクトリ設定を命令するコードです

private boolean chooseDirectory(){

        /* Choose the file Directory
         * this will ensure that the class variable directory get the value
         * only when a directory is chosen, then the button Ok will be enabled
         */

        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setAcceptAllFileFilterUsed(false);

        int returnval = fc.showOpenDialog(this);

        if(returnval == JFileChooser.APPROVE_OPTION){
            directory = fc.getSelectedFile();
            btnOk.setEnabled(true);
            return true;        
        }

        return false;
    }// end chooseDirectory

このコードを変更して実際にディレクトリを変更するにはどうすればよいですか?

if(cbxBlackBerry.isSelected())
                            txtDirectory.setText("\\RSASoftToken\\blackberry");
                        else{
                            txtDirectory.setText("");
4

2 に答える 2

1

ChangeListenerクラスを使用します

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class JCheckboxApp {
  public static void main(String args[]) {
    JFrame frame = new JFrame("CheckBox Example");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JCheckBox cbxBlackBerry = new JCheckBox("BlackBerry");
    final JTextField txtPrefix = new JTextField("textPrefix");
    final JTextField txtDirectory = new JTextField("txtDirectory");
    cbxBlackBerry.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent changeEvent) {
            JCheckBox source = (JCheckBox) changeEvent.getSource();
            if (source.isSelected()) {
                txtPrefix.setText("x-rimdevice_");
                txtDirectory.setText("\\RSASoftToken\\blackberry");
            } else {
                txtPrefix.setText("");
                txtDirectory.setText("");
            }
        }
    });

    JPanel p = new JPanel();
    p.add(txtPrefix);
    p.add(txtDirectory);
    p.add(cbxBlackBerry);
    frame.add(p);
    frame.setSize(300, 100);
    frame.setVisible(true);
  }
}
于 2012-06-25T01:10:41.560 に答える
1

次のような方法が必要です。

private void setDirectory(File dir) {
  directory = dir;
  txtDirectory.setText(dir.getAbsolutePath());
}

ディレクトリJTextFieldを設定するコードがある場合は、代わりにこのメソッドを呼び出します。たとえば、代わりに

if(cbxBlackBerry.isSelected())
   txtDirectory.setText("\\RSASoftToken\\blackberry");
else{
   txtDirectory.setText("");
}

次のようなことをします:

String dirPath = "";
if (cbxBlackBerry.isSelected())
   dirPath = BLACKBERRY_PATH; // a constant
else {
   dirPath = "";
}
setDirectory(new File(dirPath));

そして、クラスのトップで、必要に応じて定数を持っています:

private static final String BLACKBERRY_PATH = "\\RSASoftToken\\blackberry";
于 2012-06-25T01:28:07.707 に答える