我试图将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
答案 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注入了该代码。现在它只是挡路了。