2015-04-04 3 views
0

Я пытаюсь нарисовать фон, а затем нанести пуговицы на панель. Без метода рисования кнопки правильно помещаются на экран, но когда используется метод рисования, кнопки не отображаются до тех пор, пока мышка не будет вибрировать над ними. Я не могу понять, почему это было бы. БлагодаряКомпоненты не отображаются после покраски

это в конструкторе:

setBorder(new EmptyBorder(40, 40, 40, 40)); 
setSize(1600, 1000); 
setLayout(new GridLayout(4, 0, 40, 40)); 

for(int r = 0; r < rows; r++){ 
     for(int c = 0; c < cols; c++){ 
      levels[r][c] = new JButton(String.valueOf(levelNum)); 
      levels[r][c].setMargin(new Insets(50, 50, 50, 50)); 
      levels[r][c].addActionListener(e); 
      levels[r][c].setBackground(Color.MAGENTA); 
      this.add(levels[r][c]); 
      levelNum++; 
     } 
} 

и затем есть:

@Override 
public void paint(Graphics g){ 

    g.setColor(Color.CYAN); 
    g.fillRect(0, 0, this.getWidth(), this.getHeight()); 

    ... (just some basic fillRect()'s and things) 
} 

ответ

5

Потому что вы не вызывают super.paint(g) дочерние компоненты не покраситься.

Для получения дополнительной информации ознакомьтесь с разделом из учебника Swing по телефону A Closer Look at the Painting Mechanism.

Однако вы не должны быть главным образом краской() в любом случае. Пользовательская покраска выполняется путем переопределения метода paintComponent().

Код должен быть:

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(...); 
    ... 
+0

Хорошо, что имеет смысл, я стараюсь, чтобы узнать больше об использовании краски, я дам, что чтение. Благодарю. –

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