I have a JPanel that has a null layout and I'm trying to add a JSlider:
slider = new JSlider();
slider.setSize(300,30);
slider.setPreferredSize(new Dimension(300,30));
int x = (Constants.getScreenWidth()/2)-(slider.getWidth()/2);
int y = (Constants.getScreenHeight()/2)-(slider.getHeight()/2);
y = y - 100;
slider.setLocation(x,y);
slider.setBounds(x-(slider.getWidth()/2),y-(slider.getHeight()/2),300,30);
add(slider);
however the slider is not showing up. I've printed the slider and it is:
javax.swing.JSlider[,420,320,300x30,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=288,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=300,height=30],isInverted=false,majorTickSpacing=0,minorTickSpacing=0,orientation=HORIZONTAL,paintLabels=false,paintTicks=false,paintTrack=true,snapToTicks=false,snapToValue=true]
why can't I see the slider?
remove slider.setLayout(null);
you have set for setLayout(null);
its parent in this case JPanel.setLayout(null);
disclaimer never use AbsoluteLayout
for placing JComponent
to the Container
I'm able to display JSlider without code line
int x = (Constants.getScreenWidth()/2)-(slider.getWidth()/2);
int y = (Constants.getScreenHeight()/2)-(slider.getHeight()/2);
y = y - 100;
slider.setLocation(x,y);
slider.setBounds(x-(slider.getWidth()/2),y-(slider.getHeight()/2),300,30);
JComponent
to the Container
by using Insets
this code showed JSlider on the screen
import javax.swing.*;
import java.awt.*;
public class NullLayoutManagerWithJSlider extends JFrame {
private JFrame frame = new JFrame();
private static final long serialVersionUID = 1L;
public NullLayoutManagerWithJSlider() {
JSlider slider = new JSlider();
slider.setPreferredSize(new Dimension(300, 30));
frame.setLayout(null);
frame.add(slider);
Insets mmInsets = frame.getInsets();
Dimension sizeMmInn = null;
slider.setPreferredSize(new Dimension(300, 30));
sizeMmInn = slider.getPreferredSize();
slider.setBounds(20 + mmInsets.left, 16 + mmInsets.top, sizeMmInn.width, sizeMmInn.height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocation(100, 100);
frame.setSize(new Dimension(600, 400));
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
NullLayoutManagerWithJSlider cf = new NullLayoutManagerWithJSlider();
}
});
}
}