2013-04-09 4 views
0

Я программирую небольшое приложение и сталкиваюсь с большим ударом. Я застрял на том, почему JSlider не позволит мне добавить его в JPanel. При использовании последней строки кода:Как мне разрешить мой 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); 


     }  
} 

Заранее спасибо за любую помощь его наиболее ценится!

ответ

2

Горизонтальный зазор вашего FlowLayout настолько велик, что он «толкает» компонент JSlider из вытягиваемой области кадра. Сокращение этого снова возвращает его в поле зрения. Также рекомендовал бы избегать использования магических чисел (1 = FlowLayout.CENTER):

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

+1, особенно для части магического номера. Почему кто-нибудь даже смотрит на исходный код, чтобы узнать, что такое волшебное число для CENTER? – camickr

+0

Спасибо за ваш ответ. Я изменил магическое число и поместил JSliders в рамки, хотя это, похоже, не работает. Размер не меняется даже при изменении номеров. Может быть, это потому, что я положил: slider.setSize (80, 200); а не setPreferredSize? Извините, если какие-либо ошибки кажутся очевидными, я все еще новичок в этом. – JEP

+0

Если вы не видите никаких изменений, попробуйте очистить свой проект. Также 'setSize' не будет влиять на размер' JSlider'. Вам нужно будет переопределить 'getPreferredSize' для компонента. – Reimeus

 Смежные вопросы

  • Нет связанных вопросов^_^