これは謎の問題です。、JSlider
、JLabel
および がありJTextField
ます。それらをすべて隣接して配置したい。私の問題は、JTextField
(valueField)が上にシフトしていることです。コンポーネント間の y 座標の値を出力すると、すべて同じになります。と の私のコードは次JLabel
のJTextField
とおりです。
public SliderLabelPanel(String labelStr, String unitLabelStr)
//PRE: labelStr is initialized
//POST: a default SliderLabelPanel is created
{
//this.setLayout(new FlowLayout());
slider = new JSlider();
slider.setMajorTickSpacing(10);
slider.setMaximum(100);
slider.setMinimum(0);
slider.setPaintTicks(true);
label = new JLabel(labelStr);
valueField = new JTextField();
unitLabel = new JLabel(unitLabelStr);
this.add(slider);
this.add(label);
this.add(valueField);
this.add(unitLabel);
//printFields();
}
public void update()
//POST: this SliderLabelPanel is updated (size of the components)
{
this.slider.setBounds(0, slider.getY(), (int)(Global.sliderWidth * getWidth()), (int)(Global.labelHeight * getHeight()));
this.label.setBounds(slider.getX() + slider.getWidth(), slider.getY(),
Global.LABEL_WIDTH, (int)(Global.labelHeight * getHeight()));
this.valueField.setBounds(label.getX() + label.getWidth(), slider.getY(),
(int)(Global.fieldWidth * getWidth()), Global.FIELD_HEIGHT);
//valueField.getx
this.unitLabel.setBounds(valueField.getX() + valueField.getWidth(), slider.getY(),
Global.LABEL_WIDTH, (int)(Global.labelHeight * getHeight()));
printFields();
}
public void paintComponent(Graphics g)
//PRE: g is initialized
//POST: the components of this SliderLabelPanel are painted to g
{
super.paintComponent(g);
}
はJSlider
に揃えられますがJLabel
、JTextField
は上にシフトされます。アイデアが不足しているので、私にも提案をお願いします。助けてくれてありがとう!