重命名Filechooser上的按钮

问题描述 投票:0回答:1

如何重命名Filechooser中的按钮,例如从打开到保存

     saveAsButton.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            JFileChooser chooser = new JFileChooser();
            int returnVal = chooser.showOpenDialog(null);
            try(FileWriter fw = new FileWriter(chooser.getSelectedFile()+".txt")) {
                fw.write(textPane1.getText().toString());
                fw.flush();
                fw.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

        }
    });
java swing jfilechooser
1个回答
3
投票

使用JFileChooser#showSaveDialog而不是JFileChooser#showOpenDialog

我建议您查看How to Use File ChoosersJavaDocs了解更多详情

当然,如果你想要更多地控制按钮文本,那么你应该看看JFileChooser#setApproveButtonText及其相关方法

如果调用showOpenDialog或showSaveDialog,则批准按钮文本重置为默认值

你知道,这很有趣,我多年来一直在使用这种方法,它似乎一直在工作。

我挖了JFileChooser代码,发现showOpen/SaveDialog称之为......

public void setDialogType(int dialogType) {
    if(this.dialogType == dialogType) {
        return;
    }
    checkDialogType(dialogType);
    int oldValue = this.dialogType;
    this.dialogType = dialogType;
    if(dialogType == OPEN_DIALOG || dialogType == SAVE_DIALOG) {
        setApproveButtonText(null);
    }
    firePropertyChange(DIALOG_TYPE_CHANGED_PROPERTY, oldValue, dialogType);
}

这“应该”重置批准按钮文本,但出于某种原因,在我的测试中,qazxsw poi工作,让我们说话很奇怪......

showOpenDialog

那么,解决方案是什么?那么,你可以使用public class CustomFileChooser extends JFileChooser { @Override public void setDialogType(int dialogType) { String currentApproveText = getApproveButtonText(); super.setDialogType(dialogType); setApproveButtonText(currentApproveText); } } ,它将它设置为showDialog,但我会为此懒惰:P

另一个解决方案可能是简单地覆盖CUSTOM_DIALOG并重新应用setDialogType,类似......

approveButtonText
© www.soinside.com 2019 - 2024. All rights reserved.