繁体   English   中英

自定义javax.swing.JFileChooser以包含其他JTextField

[英]Customizing javax.swing.JFileChooser to include an additional JTextField

我想在FileChooser中包含一个额外的(可选的)JTextField,允许用户在选择文件时填写它,而不是在他们做出选择后给他们一个额外的提示。 有没有人尝试过类似的东西并找到了有效的解决方案?

我的目标结果看起来像这样:

http://imgur.com/lVMd6

记录的JFileChooser添加控件的方法是通过setAccessory(JComponent)方法。

JTextField field = new JTextField("Hello, World");
JPanel accessory = new JPanel();
accessory.setLayout(new FlowLayout());
accessory.add(field);

JFileChooser chooser = new JFileChooser();
chooser.setAccessory(accessory);
int ret = chooser.showOpenDialog(frame);

但是,这将在对话框的右侧布置新控件(精确定位可能与区域设置有关)。

要将组件定位到您想要的位置,您可能必须遍历组件图并对其进行操作。 这将是一个非常脆弱的方法,你可能最好只是建立自己的对话框。

这可以包含一个文件选择器:

JFileChooser chooser = new JFileChooser();
chooser.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO - wire into something
    System.out.println(e);
  }
});

JTextField field = new JTextField("Hello, World");

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(chooser, BorderLayout.CENTER);
panel.add(field, BorderLayout.SOUTH);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM