java Jpanel和边框布局,向PAGE_END添加2个组件

时间:2012-10-20 23:22:24

标签: java swing jpanel jslider grouplayout

我试图将Jslider和Jlabel添加到彼此旁边的PAGE_END,我可以在他们的on上添加它们,但是在它们上面添加.add(“组件名称”.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

1 个答案:

答案 0 :(得分: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的参数并更改添加到滑块面板的顺序,直到获得所需的外观。

BTW - 既然你自己在做布局 - 不使用GUI构建器 - 你也可以摆脱initComponents方法和周围的注释。我猜你正在使用Netbeans并创建了一个最初配置为使用GroupLayout的面板,Netbeans注入了该代码。现在它只是挡路了。