2014-10-24 3 views
0

Я установил фон на своем Jframe с ImageIO и перерисовал (drawImage). Он работает. My JFrame - это форма JFrame. Когда я добавляю больше компонентов, перетаскивая их в Jframe, и я запускаю проект, JFrame отображает только первый компонент, который я добавил. Остальные компоненты отображаются только тогда, когда я нажимал на них мышь. Помогите???Компоненты отображаются только при перемещении мыши. Помогите ? (Java)

class Main extends JFrame { 

BufferedImage img = null; 

Main() { 

     try { 
      img = ImageIO.read(new File("sfondo.jpg")); 
     } catch (Exception e) { 

     } 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     initComponents(); 
     this.repaint(); 
     setVisible(true); 
} 

@Override 
public void paint(Graphics g) { 
     g.drawImage(img, 1, 1, null); 

} 
@SuppressWarnings("unchecked") 


public static void main(String[] args) { 

     Main jrframe = new Main(); 

} 
+1

Pls использовать paintComponent вместо краски. Также звоните туда, как первое, что супер.paintComponent. Вероятно, это не источник проблемы, но потенциально источник других будущих проблем. –

+2

Не переопределяйте «краску» контейнеров верхнего уровня, как вы думаете, покраска компонентов? Собственно, просто взгляните на [этот вопрос] (http://stackoverflow.com/questions/26545536/how-do-you-use-an-image-as-background-and-place-an-image-in -front-of-that? noredirect = 1 # comment41714318_26545536), который демонстрирует концепцию для рисования изображения в фоновом режиме. Вы можете установить «JPanel» в качестве области содержимого фреймов и просто добавить материал в фрейм в соответствии с нормальным, если хотите: – MadProgrammer

+0

@TerryStorm Опять же, начиная с 'JFrame' - без' paintComponent' метода: P – MadProgrammer

ответ

0

@ initComponents() пытаются создать ContentPane и добавить некоторые компоненты, например:

Container cp = getContentPane(); 

cp.add(component1); 
Смежные вопросы