2016-11-22 1 views
-1

То, что я хочу выполнить, просто, я нажимаю JButton (называемый «right»), а границы x JLabel увеличены на 100, эффективно перемещая JLabel 100 пикселей вправо. Я экспериментировал с вещами, такие как:как добавить к границам x jlabel при нажатии кнопки

 if(clicked == right) { 
      piece.getBounds().x = +100; 
     } 

и я попробовал:

 if(clicked == right) { 
      piece.addBounds(100,0,0,0); 
     } 

Метод addBounds был не определен для типа JLabel поэтому я попытался:

 if(clicked == right) { 
      piece.setBounds(+100,0,0,0); 
     } 

и ясно все вышеизложенного не сработало, но стоило попробовать. Есть ли способ сделать то, что я пытаюсь сделать?

+0

Кажется, этого лучше было бы достичь, изменив значения «EmptyBorder», применяемые к одной метке, или полностью отказавшись от использования компонента и выполнив обычную покраску строки или изображения. Какова конечная цель всего этого «переноса метки»? См. Также [Что такое проблема XY?] (Http://meta.stackexchange.com/q/66377) –

+0

Что такое 'LayoutManager' компонента, в котором находится метка? Минимальный, полный пример поможет вам. – hendrik

ответ

0

Границы фактически прямоугольник, и поэтому вы можете получить ограничивающей JLabel, в заранее свою позицию X, а затем установить границы путем вызова соответствующих методов:

Rectangle bounds = piece.getBounds(); // get the bounds 
bounds.x += 100; // increment the x value 
piece.setBounds(bounds); // re-set the new bounds 

repaint(); // call repaint on the container that holds the JLabel so it is repainted 
+0

Спасибо! Я еще мало знаю о Java, все еще учась, ценю ваш ответ! –

0

Если я правильно помню, качели компоненты в Java должны быть перекрашены при внесении изменений в них.

Попробуйте просто вызвать метод «repaint()», когда кнопка была нажата, и ваши изменения в компоненте должны обновиться.

Смежные вопросы