2012-03-15 43 views
2

我有了一個空的佈局一個JPanel,我想添加一個JSlider的:JSlider的不是吸取了空佈局的JPanel

 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); 

但滑塊沒有顯示出來。我已經打印出滑塊,它是:

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] 

爲什麼我看不到滑塊?

+0

永永遠做手工上漿/定位 - 這是一個LayoutManager的工作;-) – kleopatra 2012-03-16 10:15:49

回答

4
  • 刪除slider.setLayout(null);你在這種情況下,設置setLayout(null);其父JPanel.setLayout(null);

  • 免責聲明從來沒有使用AbsoluteLayout放置JComponentContainer

我能夠顯示JSlider的無代碼行

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); 
  • 地方JComponentContainer使用Insets

這個代碼JSlider的顯示屏幕上

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(); 
      } 
     }); 
    } 
} 
+0

好吧,我刪除它。仍然看不到它。 – CodeGuy 2012-03-15 19:40:13

+0

@CodeGuy查看我的編輯 – mKorbel 2012-03-15 19:42:13