Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JProgressBar宽度设置为固定大小_Java_Swing_Jprogressbar - Fatal编程技术网

Java 将JProgressBar宽度设置为固定大小

Java 将JProgressBar宽度设置为固定大小,java,swing,jprogressbar,Java,Swing,Jprogressbar,我的JToolBar上有一个JProgressBar。问题在于JProgressBar占用了JToolBar上的所有剩余空间,而不是固定宽度 我试过使用: Dimension prefSize = goButton.getPreferredSize(); prefSize.width = 100;//some width progressBar.setPreferredSize(prefSize); progressBar.setVisible(true); 没有成功。JProgressBar

我的
JToolBar
上有一个
JProgressBar
。问题在于
JProgressBar
占用了
JToolBar
上的所有剩余空间,而不是固定宽度

我试过使用:

Dimension prefSize = goButton.getPreferredSize();
prefSize.width = 100;//some width
progressBar.setPreferredSize(prefSize);
progressBar.setVisible(true);
没有成功。
JProgressBar
继续占用所有剩余空间

如何强制
JProgressBar
具有固定宽度

以下是我的问题的一个小的可运行示例:

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JToolBar;

public class SimpleToolbar extends JFrame {

    class ToolBar extends JToolBar {

    private final JLabel labelSomething;
    private final JLabel labelAnything;
    private final JButton goButton;
    private final JButton cancelButton;
    private final JButton pauseButton;
    private final JProgressBar progressBar;

    public ToolBar()
    {
        setBorder(BorderFactory.createEtchedBorder());
        setFloatable(false);
        goButton = new JButton("Go");
        cancelButton = new JButton("Cancel");
        pauseButton = new JButton("Pause");
        labelAnything = new JLabel("Anything");
        labelSomething = new JLabel("Something");

        progressBar = new JProgressBar();
        progressBar.setIndeterminate(true);

        Dimension prefSize = goButton.getPreferredSize();
        prefSize.width = 100;//some width
        progressBar.setPreferredSize(prefSize);
        progressBar.setVisible(true);

        add(goButton);
        add(cancelButton);
        add(pauseButton);
        addSeparator();
        add(labelAnything);
        add(labelSomething);
        addSeparator();
        add(progressBar);
    }
}
    protected ToolBar toolBar;

    public SimpleToolbar() {
        super();
        setSize(600, 350);

        toolBar = new ToolBar();
        getContentPane().add(toolBar, BorderLayout.NORTH);
        setVisible(true);
    }

    public static void main(String[] a) {
        new SimpleToolbar();

    }
}

JProgressBar
添加到
JPane
并将
JPane
添加到
JToolBar


很高兴它有所帮助:)

您是否尝试过将进度条添加到JPane,然后再将其添加到JToolBar@NonSecwitter不,我没有,我会试试看,然后再报告。@NonSecwitter,是的,你是对的!如果你想把它作为一个答案,我很乐意接受。谢谢平心而论,我不知道它到底为什么会起作用,尽管我认为它与
界限有关。。。我只知道它在过去的类似问题上对我很有效
JToolBar
有自己的布局管理器,你需要注意这一点。。。