如何从 JFileChooser 获取此值?

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

我想知道是否有办法获取用户在按下“接受”(我删除了确认和取消按钮)后在

JFileChooser
中写入的文本,例如文本字段(
.getText()
)。

Screenshot

java swing gettext jfilechooser
2个回答
0
投票

这是我写的一个例子:

JFileChooser x=new JFileChooser();
int returnVal=x.showOpenDialog(this);
File file=x.getSelectedFile();
System.out.println(file.getName());

即使该文件不是实际文件,当您调用

file.getName()
时,它仍然会打印出框中的内容。当我输入随机字符串时,它返回该字符串,即使它不是文件。


0
投票

我能够通过使用类似问题的另一个答案的主要概念来实现这一点:

private JTextField getFilenameTextField(Container cont)
{
  for (Component c : cont.getComponents())
  {
    if (c instanceof JTextField)
    {
      return (JTextField)c;
    }
    else if (c instanceof Container)
    {
      JTextField textField = getFilenameTextField(((Container) c));
      if (textField != null) return textField;
    }
  }
  return null;
}

这将采用某个容器(在本例中为 JFileChooser 对象)作为参数,并递归搜索其每个组件和子组件,直到找到 JTextField。如果由于某种原因找不到,则返回

null
。然而,这应该可以正常工作,因为标准的普通 JFileChooser 应该始终只有一个文本字段。

然后,您可以使用 JTextField 类的

getText()
setText()
方法来检索和修改该文本字段中包含的文本:

JFileChooser chooser = new JFileChooser();
JTextField filenameTextField = getFilenameTextField(chooser);
String filename = filenmaeTextField.getText();
filenameTextField.setText("THIS");

如果您想在用户选择“确定”/“保存”/“选择”按钮时检索此值,您可以重写 JFileChooser 类的

approveSelection()
方法,以便在用户按下此按钮时执行一些代码:

JFileChooser chooser = new JFileChooser()
{
  @Override
  public void approveSelection()
  {
    JTextField filenameTextField = getFilenameTextField(this);
    ...
  }
};

当您不想批准某个选择时,请不要忘记对

super.approveSelection()
return
ing 进行适当的调用。我会研究覆盖
approveSelection()
方法以获取更多信息!

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