Witam,
głowię się z tym już od dłuższego czasu, a bez tego nie ruszę dalej mojej pracy. Problem polega na tym, że obraz, który ładuję do panelu nie wypełnia całej ramki:
http://i39.tinypic.com/125mc1z.png
Widać to przy krawędziach, gdzie wszędzie powinna być kratka.
Kod odpowiedzialny za program:
public class MenuFrame extends JFrame {
JPanel panelglowny = new JPanel();
public MenuFrame()
{
super("Funkcja kwadratowa");
add(panelglowny);
this.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt)
{
if(evt.getX( )>674 && evt.getX()<784 && evt.getY( )>185 && evt.getY()<223)
{
JPanel moj_profil = new Moj_Profil();
panelglowny.removeAll(); // Najlepiej by było, gdyby usunąć panelglowny. ale niestety nie będzie się
panelglowny.add(moj_profil); // ładować
panelglowny.revalidate();
panelglowny.repaint();
}
}
});
JPanel obrazPanel = new Menu();
panelglowny.add(obrazPanel); // Jeśli usunę panelglowny. to przerwa zniknie, niestety MouseListener przestaje działać
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
pack();
setVisible(true);
}
}
Kod, do którego odnosi się JPanel obrazPanel = new Menu(); :
public class Menu extends JPanel {
private BufferedImage tlomenu;
public Menu() {
super();
File imageFile = new File("menu.png");
try {
tlomenu = ImageIO.read(imageFile);
} catch (IOException e) {
System.err.println("Blad odczytu obrazka");
e.printStackTrace();
}
Dimension dimension = new Dimension(tlomenu.getWidth(), tlomenu.getHeight());
setPreferredSize(dimension);
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(tlomenu, 0, 0, this);
}
}
Zależało mi na tym sposobie, ponieważ umożliwia on nakładanie na siebie obrazków.