2012-10-20 3 views
1

m에 추가하면 Jslider와 Jlabel을 서로 옆에 추가 할 수 있지만 각각 위에 추가 할 수는 있지만 .add ("구성 요소 이름".PAGE_END) 둘 다 거기에 하나 존재하게합니까?java Jpanel 및 테두리 레이아웃, 두 구성 요소를 PAGE_END

그래서 기본적으로 슬라이더와 오른쪽에있는 슬라이더를 만들고 싶습니다. 어쨌든 누군가 도와 주실 수 있습니다. 감사합니다.

패키지 할당; 대신 슬라이더와 라벨을 모두 배치가 BorderLayout을 사용

//import java.awt.FlowLayout; 
import java.awt.BorderLayout; 
import javax.swing.JLabel; 
import javax.swing.JSlider; 
import javax.swing.JTextField; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class MyControlPanel extends javax.swing.JPanel { 

JSlider slider; 
JLabel sliderLabel; 
JLabel blank; 

public MyControlPanel() { 


slider = new JSlider(); 
slider.setValue(50); 
slider.addChangeListener(new MyChangeAction()); 
slider.setMajorTickSpacing(10); 
slider.setPaintLabels(true); 
slider.setPaintTicks(true); 
slider.setBounds(300, 50, 100, 50); 
sliderLabel = new JLabel("50"); 
blank = new JLabel("  "); 

JTextField boundary_length = new JTextField("Boundary Length"); 
JTextField area = new JTextField("Area"); 

setLayout(new BorderLayout()); 


this.add(slider, BorderLayout.PAGE_END); 
this.add(sliderLabel, BorderLayout.LINE_END); 
this.add(area); 
this.add(boundary_length); 
this.add(blank, BorderLayout.LINE_START); 
} 

@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
this.setLayout(layout); 
layout.setHorizontalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    .addGap(0, 400, Short.MAX_VALUE) 
); 
layout.setVerticalGroup(
    layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
    .addGap(0, 300, Short.MAX_VALUE) 
); 
}// </editor-fold>       
// Variables declaration - do not modify      
// End of variables declaration     

public class MyChangeAction implements ChangeListener{ 

//complete code here 

public void stateChanged(ChangeEvent ce) 
{ 
int value = slider.getValue(); 
String str = Integer.toString(value); 
sliderLabel.setText(str); 


} 

} // end class 
+0

복제본 http://stackoverflow.com/q/12993221/741249. 동일한 질문을 여러 번 게시하지 마십시오! – THelper

답변

3

, 두 구성 요소를 포함하는 패널을 만든 다음 패널을 배치 BorderLayout를 사용합니다.

JPanel sliderPanel = new JPanel(); 
sliderPanel.setLayout(new FlowLayout(FlowLayout.TRAILING)); 
sliderPanel.add(slider); 
sliderPanel.add(sliderLabel); 
this.add(sliderPanel, BorderLayout.PAGE_END); 

이것은 내가 OK를 놓고 대화 상자의 하단에있는 버튼을 취소하는 데 사용되는 코드를 기반으로

this.add(slider, BorderLayout.PAGE_END); 
this.add(sliderLabel, BorderLayout.LINE_END); 

를 교체합니다. 이것은 컴파일되지 않을 수도 있지만 아이디어를 얻습니다. FlowLayout에 대한 인수를 가지고 놀고 원하는 모양을 얻을 때까지 슬라이더 패널에 추가하는 순서를 변경하십시오.

BTW - GUI 빌더를 사용하지 않고 직접 레이아웃을 수행하고 있으므로 initComponents 메소드와 주변 주석을 제거 할 수도 있습니다. Netbeans을 사용하고 처음 GroupLayout을 사용하도록 구성된 패널을 만들고 Netbeans이 해당 코드를 삽입했다고 추측합니다. 이제 막 방해 받고 있습니다.

+0

고마워, 그래, 작동하지만, 확실하지 않은 코드를 삭제하는 방법, 잠겨있어 :( – john