3

私は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();
      }
    });
  }

}
4

2 に答える 2

1
  public JProgressBar createJP(int input) {
    JProgressBar jp = new JProgressBar(JProgressBar.VERTICAL, 0, 100);
    //jp.setPreferredSize(new Dimension(10, 100));
    //Why do you use PreferedSize if you want the size to be fixed?
    jp.setSize(new Dimension(10, 100));
    jp.setValue(input);  
    jp.setBackground(Color.BLACK);
    setBorderPainted(false);  
    return jp;
  }
于 2012-07-18T11:48:11.993 に答える
0

MigLayoutやGridBagLayoutなどのより柔軟なLayoutManagerを使用できます。

これにより、(おおよそ)望ましい結果が得られます。

MigLayout mig = new MigLayout(null, null, "[align bottom]");
getContentPane().setLayout(mig);
for (int i = 1; i <= 10; i++) {
    getContentPane().add(createJP(i*10));
}
于 2012-07-18T12:14:14.157 に答える