自定义文件选择器窗口-java

自定义文件选择器窗口-java,java,swing,applet,Java,Swing,Applet,我想自定义文件选择器窗口。在这里,我想插入一个标签和文本框,我还坚持如何从新添加的文本框中获取插入值。 这就是我所做的 我的自定义文件选择器: 我需要像这样的信息: 我只是扩展了JFileChooser,并使用下面提到的代码添加组件: JPanel panel = new JPanel(); JLabel lable = new JLabel("Document Name: "); lable.setForeground(Color.RED);

我想自定义文件选择器窗口。在这里,我想插入一个标签和文本框,我还坚持如何从新添加的文本框中获取插入值。 这就是我所做的

我的自定义文件选择器:

我需要像这样的信息:

我只是扩展了JFileChooser,并使用下面提到的代码添加组件:

JPanel panel = new JPanel();
        JLabel lable = new JLabel("Document Name: ");
        lable.setForeground(Color.RED);
        docText = new JTextField();
        docText.setName("documentNameText");
        docText.setHorizontalAlignment(SwingConstants.LEFT);
        GroupLayout gl_panel = new GroupLayout(panel);
        gl_panel.setHorizontalGroup(gl_panel
                .createParallelGroup(Alignment.LEADING)
                .addGroup(
                        gl_panel.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(
                                        gl_panel.createParallelGroup(
                                                Alignment.LEADING)
                                                .addComponent(
                                                        docText,
                                                        GroupLayout.PREFERRED_SIZE,
                                                        150,
                                                        GroupLayout.PREFERRED_SIZE)
                                                .addComponent(lable))
                                .addContainerGap(0, Short.MAX_VALUE)));
        gl_panel.setVerticalGroup(gl_panel.createParallelGroup(
                Alignment.TRAILING).addGroup(
                gl_panel.createSequentialGroup()
                        .addContainerGap(172, Short.MAX_VALUE)
                        .addComponent(lable)
                        .addPreferredGap(ComponentPlacement.RELATED)
                        .addComponent(docText, GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE,
                                GroupLayout.PREFERRED_SIZE).addContainerGap()));
        gl_panel.setAutoCreateGaps(true);
        gl_panel.setAutoCreateContainerGaps(true);
        panel.setLayout(gl_panel);
        setAccessory(panel);

我无法使用您的
GroupLayout
获得结果

但是运行并检查我创建的以下程序。我将根据需要为您提供自定义JFileChooser

public class CustomJFileChooser {
    public static void main(String[] args) {
        final JFileChooser chooser = new JFileChooser();
        JComponent panel = new JPanel((LayoutManager) new FlowLayout(
                FlowLayout.LEFT));
        JTextField docText = new JTextField(20);
        docText.setName("documentNameText");
        docText.setHorizontalAlignment(SwingConstants.LEFT);
        panel.add(new JLabel("Document Name: "));
        panel.add(docText);
        chooser.setAccessory(panel);

        // This part is important
        JComponent center = null;
        BorderLayout layout = (BorderLayout) chooser.getLayout();
        for (Component child : chooser.getComponents()) {
            if (BorderLayout.CENTER == layout.getConstraints(child)) {
                center = (JComponent) child;
            }
        }
        if (center != null)
            center.add(panel, BorderLayout.SOUTH);

        // --------

        final JFrame frame = new JFrame();
        JButton button = new JButton("Open File Chooser");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                chooser.showOpenDialog(frame);
            }
        });
        frame.getContentPane().add(button);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

}

我只是测试了另一个答案,但我无法让它工作。我是这样做的:

    JFileChooser fc = new JFileChooser();    

    //get the center component
    BorderLayout layout = (BorderLayout) fc.getLayout();
    JComponent comp = (JComponent) layout.getLayoutComponent(BorderLayout.CENTER);
    layout = (BorderLayout) comp.getLayout();
    comp = (JComponent) layout.getLayoutComponent(BorderLayout.CENTER);

    //add my panel at the bottom
    comp.add(panel, BorderLayout.SOUTH);

@Sandhu我已经用代码更新了我的问题