如何让我的Jslider适合我的JPanel?

时间:2013-04-09 12:34:15

标签: java swing jframe jpanel jslider

我正在编写一个小应用程序并遇到了很大的问题。我坚持为什么JSlider不允许我将它添加到JPanel。 当最后一行代码为:

“添加(滑块);”

JSlider涵盖了整个JPanel。这是正确的,我需要以某种方式调整我的JSlider的大小吗?或者,我是否犯了代码错误,并没有让Jslider在Jpanel中可见?

这是我的代码:

package atmosfile;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JSlider;


import java.awt.*;

public class Main extends JFrame {
private static final long serialVersionUID = 1L;


 public Main() {

     super("Package Choice");
     setSize(800, 600);
     setDefaultCloseOperation(EXIT_ON_CLOSE);
     setLocationRelativeTo(null);

       JPanel panel = new JPanel();

         panel.setLayout(new FlowLayout(1, 100, 500));
         panel.add(new JButton("Package 1"));
         panel.add(new JButton("Package 2"));
         panel.add(new JButton("Package 3"));
         add(panel);

       JSlider slider = new JSlider();   

         slider.setLayout(new FlowLayout(1, 100, 200));
         slider.setMajorTickSpacing(5);
         slider.setPaintTicks(true);
         slider.setSize(200, 200);
         slider.setVisible(true);
         panel.add(slider);


        }    
}

提前感谢您的帮助,非常感谢!

1 个答案:

答案 0 :(得分:2)

FlowLayout的水平间距太大,无法将JSlider组件“推出”框架的可绘制区域。减少它会再次进入视野。还建议避免使用幻数(1 = FlowLayout.CENTER):

panel.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 500));