2010-01-28 28 views
6

我想在FileChooser中包含一个额外的(可选的)JTextField,允许用户在选择文件时填充它,而不是在他们创建文件后给他们一个额外的提示选择。有没有人尝试类似的东西,找到了一个可行的解决方案?自定义javax.swing.JFileChooser以包含其他JTextField

我的目标结果会是这个样子:

http://imgur.com/lVMd6

回答

7

documented方式将控件添加到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); 
+0

+1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;; :) – 2010-01-28 20:55:17

相关问题