Я работаю над диаграммой школьного задания.Однако я застрял, когда пытался расположить ярлык слева от бара.Я предполагаю, что мне нужно использовать метод, чтобы получить ширину текста надписи, а затем вычесть значение из позиции x на панели.
public class Bar {
// the numeric value of the bar
private int value;
// the rectangle representing the bar
private Rectangle view;
// The text label for this bar
private Text label;
// The value as a text object
private Text valueText;
/**
* Constructor for a bar object. The rectangle for the bar is
* also constructed here and its size is set to the given height.
* The value of the bar is initialised to 0.
* If there is a label for the bar, a Text object is created using the
* text of the label and the colour of the label set to black.
* The bar and the label are not visible until the display method
* is called.
*
* @param label The label for the bar.
* @param width The height of the bar.
*/
public Bar(String label, int height) {
view = new Rectangle();
view.changeSize (0,height);
this.label = new Text(label);
display();
}
public void display() {
label.makeVisible();
view.makeVisible();
}
public void setValue (int Newvalue){
value= Newvalue;
}
public void setPosition (int x, int y){
view.setPosition(x,y);
label.setPosition(x,y);
}
public int getTextWidth() {
return (int) ((Text)label).getWidth();
}
}
Редактировать: я приложил снимок экрана с моей программой BlueJ и описание назначения. гистограмма назначение Я создал на общедоступной панели калибровки панель в виде прямоугольника с именем «view».Ширина прямоугольника (бара) изначально установлена на ноль, поэтому на холсте появляется в виде линии (см. Рисунок).Я создал метку в виде текста, которая должна появляться слева от панели (мой прямоугольник) каждый раз, когда я редактирую ширину.Дело в том, что я не знаю, как изменить ширину в методе Public void set value.Когда я вызываю метод и в качестве значения параметра ввожу 100, значение бара должно измениться на 100, а ширина представления (прямоугольника) должна измениться на 100, но это не так.И этикетка находится в неправильном положении.В методе setPosition я должен сделать так, чтобы метка отображалась слева от прямоугольника (бара).Но как?И затем, когда я вызываю метод отображения, я должен увидеть на ивах значение, представляющее ширину полосы.Как?Большое спасибо.
Просто, чтобы вы знали, я абсолютный новичок, всего через 3 недели моего курса.
Так что в основном я хочу, чтобы значение, возвращаемое getTextWidth (), вычло его из xкоордината панели (текст должен появиться слева от панели).Любая помощь очень ценится.