Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Отрисовка JPanel


Автор: Stvan 1.3.2005, 09:16
Делаю свою панель, с фоном (файл gif) и кнопкой:

Код

public class MapPanel extends JPanel {
   Image background = Toolkit.getDefaultToolkit().getImage("...gif");

   public MapPanel(int xpos, int ypos) {
       super();
       setBounds(xpos, ypos, 570, 570);
       JButtton button = new JButton();
       button.setPreferredSize(new Dimension(11,40));
       this.add(button);
  }

   public void paint(Graphics g) {
       super.paint(g);
       g.drawImage(background,0,0,this);
   }
}


Так вот после отрисовки всего этого дела фон закрывает кнопку и она не появляется, пока на нее не нажмешь вслепую. Что неправильно?

Автор: Domestic Cat 1.3.2005, 09:19
Попробуй вызывать super.paint(g) после drawImage а не перед.

Автор: Stvan 1.3.2005, 09:24
Тогда фон вообще не рисуется.

Автор: Domestic Cat 1.3.2005, 09:55
Вот этот код отрисовывает все как надо:

Код

import javax.swing.*;
import java.awt.*;

public class Doh extends JFrame
{
Doh()
{
 setSize(400, 500);
 add(new MapPanel(0, 0));
 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
 setVisible(true);
}
public static void main(String [] s)
{
 new Doh();
}
}

class MapPanel extends JPanel
{
   Image background = new ImageIcon("C:\\Cat.jpg").getImage();

   public MapPanel(int xpos, int ypos)
   {
       setBounds(xpos, ypos, 300, 300);
       JButton button = new JButton("Hello");
       button.setPreferredSize(new Dimension(60,60));
       this.add(button);
  }

   public void paintComponent(Graphics g)
   {
       g.drawImage(background,0,0,this);
   }
}

Автор: Stvan 1.3.2005, 10:03
Вот спасибо!

Автор: DarkDS 2.3.2005, 22:22
Кстати. Перекрывать Пайнт у свинговых компонентов чутка не корректно (точнее не желательно) smile
Это даже в туториале на сане написано. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)