2010-01-28 33 views
6

Tôi muốn bao gồm một JTextField bổ sung (tùy chọn) trong FileChooser, cho phép người dùng điền vào trong khi chọn tệp thay vì cung cấp cho họ một lời nhắc bổ sung sau khi họ thực hiện lựa chọn. Có ai đã thử một cái gì đó tương tự và tìm thấy một giải pháp làm việc?Tùy chỉnh javax.swing.JFileChooser để bao gồm một JTextField bổ sung

kết quả mục tiêu của tôi sẽ giống như thế này:

http://imgur.com/lVMd6

Trả lời

7

Các documented cách nào để thêm điều khiển để một JFileChooser là thông qua phương pháp 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); 

Tuy nhiên, điều này sẽ bố trí điều khiển mới ở bên phải hộp thoại (vị trí chính xác có thể phụ thuộc vào miền địa phương).

Để xác định vị trí thành phần theo vị trí bạn muốn, có thể bạn sẽ phải di chuyển đồ thị thành phần và thao tác nó. Đây sẽ là một cách tiếp cận rất mong manh và bạn có thể tốt hơn là chỉ cần xây dựng hộp thoại của riêng bạn.

Điều này có thể kết hợp một tính năng chọn file:

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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;; :) –

Các vấn đề liên quan