JTextPane 中的 JProgressBar

JProgressBar in JTextPane

我在我的文本窗格中添加了一个进度条,但我无法调整添加的进度条的宽度(可以调整高度)。你能帮我解决这个问题吗,并告诉我完成后如何删除进度条。

JProgressBar progressBar = new JProgressBar();
progressBar.setStringPainted(true);
progressBar.setPreferredSize(new Dimension(50, 15));
progressBar.setMinimum(0);
progressBar.setMaximum((int) file.length());

textPane.setSelectionStart(textPane.getText().length());
textPane.setSelectionEnd(textPane.getText().length());
textPane.insertComponent(progressBar);

我想您是在问如何为 JProgressBar 设置首选宽度,对吗?

如果这是你的问题,你应该使用 setMaximumSize 而不是 setPreferredSize:

JProgressBar progressBar = new JProgressBar();
progressBar.setStringPainted(true);
//progressBar.setPreferredSize(new Dimension(50, 15));
progressBar.setMaximumSize(new Dimension(50, 15)); // This line instead of above line
progressBar.setMinimum(0);
progressBar.setMaximum((int) file.length());

[编辑] 要删除组件,您应该假设 JTextPane 中的组件为某些字符,然后从 JTextPane's Document 对象中删除它们。我还假定了一个临时 JButton 来引发删除事件:

JButton b = new JButton("Remove!");
b.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
            try {
                textPane.getDocument().remove(0, 1);
            } catch (BadLocationException e1) {
                e1.printStackTrace();
            }
        }
    });

祝你好运。