Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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 - Fatal编程技术网

Java 如何将所有JProgressbar与特定行对齐,以显示其外观如目标所示

Java 如何将所有JProgressbar与特定行对齐,以显示其外观如目标所示,java,swing,Java,Swing,我有10个JProgressbar,我试着把所有的都放在同一个对齐位置,这样看起来就像目标中所示,但当我跟着它跑的时候,就像失败部分所示 import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FlowLayout; import javax.swing.*; public class YumYumYum { private static JFrame f

我有10个JProgressbar,我试着把所有的都放在同一个对齐位置,这样看起来就像目标中所示,但当我跟着它跑的时候,就像失败部分所示

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.*;

public class YumYumYum {

  private static JFrame f = new JFrame();
  private static JPanel panelFirst;

  public JProgressBar createJP(int input) {
    JProgressBar jp = new JProgressBar(JProgressBar.VERTICAL);
    jp.setPreferredSize(new Dimension(10, input));    
    return jp;
  }

  public YumYumYum() {
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    f.setLayout(new FlowLayout());
    f.setSize(320, 240);
    f.setLocationRelativeTo(null);

    // Main Menu
    panelFirst = new JPanel();        
    panelFirst.setBackground(Color.BLACK);    
    panelFirst.setLayout(new FlowLayout(FlowLayout.LEFT, 5,30));    
    panelFirst.setVisible(true);

    panelFirst.add(createJP(10));
    panelFirst.add(createJP(20));
    panelFirst.add(createJP(30));
    panelFirst.add(createJP(40));
    panelFirst.add(createJP(50));
    panelFirst.add(createJP(60));
    panelFirst.add(createJP(70));
    panelFirst.add(createJP(80));
    panelFirst.add(createJP(90));
    panelFirst.add(createJP(100));

    f.getContentPane().add(panelFirst);    
    f.pack();
    f.setVisible(true);

  }

  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      @Override
      public void run() {
        YumYumYum s = new YumYumYum();
      }
    });
  }

}


您可以使用更灵活的LayoutManager,如或GridBagLayout

这(大致)给了我想要的结果:

MigLayout mig = new MigLayout(null, null, "[align bottom]");
getContentPane().setLayout(mig);
for (int i = 1; i <= 10; i++) {
    getContentPane().add(createJP(i*10));
}
MigLayout mig=新的MigLayout(null,null,“[align bottom]”);
getContentPane().setLayout(mig);
for(int i=1;i jp.setBackground(Color.BLACK);解决了这个问题。你能解释一下,你的目标是什么吗?我的目标类似于但没有像现在显示的边框一样的边框“如果你想固定大小,为什么要使用PreferredSize?”一个原因是版面管理员更倾向于使用首选大小,而不是大小。
MigLayout mig = new MigLayout(null, null, "[align bottom]");
getContentPane().setLayout(mig);
for (int i = 1; i <= 10; i++) {
    getContentPane().add(createJP(i*10));
}