【发布时间】:2012-06-07 16:55:48
【问题描述】:
这是一个神秘的问题。我有一个JSlider、JLabel 和JTextField。我希望它们都相邻对齐。我的问题是JTextField's (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 将向上移动。也请给我建议,我的想法不多了。感谢大家的帮助!
【问题讨论】:
-
您写的帖子和代码对我们来说几乎无法测试。请创建并发布一个可显示您的问题的小型可编译程序,该程序足够完整,可以为我们编译和运行,但又足够小,以便可以快速理解,sscce。
-
事实上,我之前已经向您发布了此建议,并在您最近的问题中向您展示了一个示例 SSCCE。请付出同样的努力来问你的问题,就像我在回答你的最后一个问题时已经投入的一样。要求不高。
-
你为什么使用Absolute Positioning?
-
@Hovercraft 满满的鳗鱼。好的,我会在查看其他解决方案后发布它。
-
@trashgod,你能给我一些建议吗?我使用的是 BorderLayout,它看起来很尴尬。缩放非常重要。
标签: java applet vertical-alignment jlabel jtextfield