2012-10-20 87 views
1

m試圖添加一個Jslider和一個Jlabel到PAGE_END旁邊,我可以在它們的每個上添加它們,但添加.add(「組件名稱」.PAGE_END)爲了讓它在那裏存在?java Jpanel和邊框佈局,將2個組件添加到PAGE_END

所以基本上我想創建我的滑塊和它旁邊的一個jlabel在右邊,有人可以請幫忙,謝謝。

包分配;

//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放置兩個滑塊和標籤的,創建包含兩種組分的面板,然後使用BorderLayout的放置面板。

更換

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

隨着

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

這是基於我用來放置的確定,在對話框底部的取消按鈕的代碼。這可能不會編譯 - 但你明白了。玩弄FlowLayout的參數並改變添加到滑塊面板的順序,直到獲得所需的外觀。

順便說一句 - 既然你自己在做佈局 - 不使用GUI生成器 - 你也可以擺脫initComponents方法和周圍的註釋。我猜你正在使用Netbeans並創建了一個最初配置爲使用GroupLayout的面板,並且Netbeans注入了該代碼。現在它只是擋道。

+0

謝謝,它的工作原理,是的,但我不知道如何刪除代碼,其鎖定:( – john