-4

我正在尝试使用 showOpenDialog 选择一个文件,并且我想在我的 GUI 上将所选文件的名称设置为 JLabel。我写了这段代码,但它不起作用..谁能告诉我正确的方法?

    b3.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            final JFileChooser fc = new JFileChooser();
            int returnVal = fc.showOpenDialog(fc);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                String fileName= file.getName();
                l6 = new JLabel(fileName);
                l6.setBounds(50, 315, 70, 20);
                p.add(l6);
            }
        }
    });
4

1 回答 1

4

新组件JLabel没有出现,因为您需要调用revalidate()repaint()更新容器以考虑新添加的组件。

从您的使用来看setBounds,您似乎正在使用绝对定位(如果没有,布局管理器将不理会此调用)。总是更好地使用布局管理器来定位和调整组件大小..

您可以简单地调用setText现有的JLabel而不是向容器中添加新的:

b3.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {

        final JFileChooser fc = new JFileChooser();
        int returnVal = fc.showOpenDialog(fc);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fc.getSelectedFile();
            String fileName = file.getName();
            l6.setText(fileName);
        }
    }
});
于 2013-01-24T19:12:16.350 回答