2012-11-02 4 views
0

Моя проблема заключается в том, что фоновое изображение охватывает все ImageIcons, которые я использую в своей JPanel. Например, в этом фрагменте кода я пытаюсь установитьIcon на одну из ярлыков, которые у меня есть в моей панели. Но фоновое изображение покрывает его. Как я могу это исправить? Не имеет значения, если я использую label.setIcon() вне метода рисования или внутри него.ImageIcons не отображается - JAVA

public void paint(Graphics g) { 
     super.paint(g);  
     g.drawImage(backgroundImage, 0, 0, this); 
      label1.setIcon(iconImage); 

} 

Заранее благодарен!

+2

Метод переопределения - это 'paintComponent()', а не 'paint()'. Значок не должен устанавливаться в методе 'paintComponent()'. И попробуйте рисовать изображение перед вызовом 'super.paintComponent()', так что «нормальная» картина будет сделана поверх фонового изображения. (не проверено, поэтому, я не пишу это как ответ) –

+0

или переопределить 'paintIcon()' – mKorbel

ответ

0

Попробуйте поместить label.seticon за пределы переопределенного метода. См:

How to set JFrame or JPanel Background Image in Eclipse Helios

вы можете реализовать его как;

public void paintComponent(Graphics g) { 
g.drawImage(img, 0, 0, null); 
} 

ИЛИ

public void paint(Graphics g) { 
if (img!=null) g.drawImage(img, 0, 0, null); 
super.paint(g); 
} 
+1

Вы обязаны соблюдать цепочку лакокрасочных покрытий. Не называя super.paint, вы нарушаете этот контракт. Методы рисования выполняют большую важную работу (например, рисование дочерних компонентов, двойная буферизация (в случае JComponents) и непрозрачность), вы никогда не должны называть их супер-реализации - IMHO – MadProgrammer

+0

Got It! Спасибо @MadProgrammer. – Purnesh

1
  1. Установить расположение базовой панели BorderLayout
  2. Добавить JLabel к базовой панели, установив его значок фонового изображения
  3. Установить раскладку если JLabel, что вам нужно
  4. Добавить rema входящих в эту метку
Смежные вопросы