1

我试图将一个 Jslider 和一个 Jlabel 添加到彼此旁边的 PAGE_END 中,我可以将它们中的每一个都添加到它们的上面,但是将 .add("components name".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
4

1 回答 1

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 注入了该代码。现在它只是碍事了。

于 2012-10-20T23:42:33.377 回答