Java en plaatjes HELP

Status
Niet open voor verdere reacties.

Juzzz

Gebruiker
Lid geworden
15 jan 2008
Berichten
281
Ik ben bezig met het leren van java.

nu wil oefenen met plaatjes en Applets.
alleen snap ik het niet helemaal in Java.

wat ik wil is 2 dingen (verschillende programma's)

1. Een GUI in BorderLayout waar een image en 2 knoppen zitten.
zoals ik het zie dus een JPanel voor de image in .CENTER en een JPaneld met 2 knoppen in .SOUTH

2. Een gui met een achtergrond plaatje en andere verschillende plaatjes waar weer andere plaatjes over heen kunnen staan. (Zoals layers in Photohop) en dat mbv sommige plaatjes die fungeren als knoppen weer andere plaatjes kunnen veranderen.

het liefst zo robuust mogelijk en begrijpelijk. ik wil het niet "copy pasten" maar leren hoe het moet. dus als er wat uitleg bij kan graag.

alvast SUPER bedankt,
Juzzz
 
Laatst bewerkt:
Ga eens op zoek in de java API... De klasse Icon en subklassen zullen erg van pas komen.
Er zijn verschillende manieren om tot een afbeelding op een bepaalde plaats in je programma te komen. Om bijvoorbeeld een afbeelding in je .CENTER te maken zou je kunnen doen:
Code:
JPanel panel = new JPanel; // 
panel.setLayout(new BorderLayout()); // 
JLabel label = new JLabel(new ImageIcon("naam_van_afbeelding.jpg")); // maak een JLabel met de constructor "JLabel(Icon image)". 
// De afbeelding moet in je projectmap zitten. 
// Anders zal hij hem niet vinden en hem gewoon niet weergeven zonder foutmelding!
panel.add(label, BorderLayout.CENTER);

hieronder zie je wat de constructors zijn voor een JLabel, je ziet dat één ervan is: "JLabel(Icon image)"

Achteraf kun je de afbeelding van de JLabel veranderen door gebruik te maken van: "setIcon(...)"

Bijvoorbeeld:
Code:
label.setIcon(new ImageIcon("naam_van_afbeelding.gif_of_andere_extentie";
// Verander de afbeelding die de JLabel toont. De afbeelding past zich normaal mooi aan aan de afmetingen van je JLabel.

Code:
JLabel()
          Creates a JLabel instance with no image and with an empty string for the title.
JLabel(Icon image)
          Creates a JLabel instance with the specified image.
JLabel(Icon image, int horizontalAlignment)
          Creates a JLabel instance with the specified image and horizontal alignment.
JLabel(String text)
          Creates a JLabel instance with the specified text.
JLabel(String text, Icon icon, int horizontalAlignment)
          Creates a JLabel instance with the specified text, image, and horizontal alignment.
JLabel(String text, int horizontalAlignment)
          Creates a JLabel instance with the specified text and horizontal alignment.

Je kunt dat al eens proberen. ;-) Eens je er mee weg bent lukt het je wel. Maar het tweede wat je wil bereiken, lijkt me iets minder makkelijk. ;-) Ikzelf heb ook al met de vraag gezeten hoe je verschillende afbeeldingen op elkaar kan plaatsen en ik benieuwd of er van iemand hier een antwoord op komt!
 
Laatst bewerkt:
Over je probleem i.v.m. het layer-effect...
Dit is zeer moeilijk na te bootsen, niet aangeraden voor eerder beginners, en zeker niet aangeraden in Java. Desalniettemin, dacht ik aan volgende twee mogelijkheden...
1. Je speelt in je JPanel met je layout. GridBagLayout is hier wel geschikt voor, maar niet echt gemakkelijk te begrijpen. Sun heeft hier wel een tutorial over. ;)
2. Deze optie is eerder aangeraden. Hierin speel je met de klasse Graphics of Graphics2D uit de Java API.
Je maakt namelijk een extensie van JPanel, waarin je paintComponent(Graphics g) overschrijft. Dan krijg je zoiets:
Code:
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImagePanelProject {
  private static final String IMAGE_LOCATION = "images/background.jpg";
  //Hier plaats je natuurlijk de echte locatie van je achtergrondtekening
  
  public static void main(String[] args) {
    ImagePanel p = new ImagePanel(new ImageIcon(IMAGE_LOCATION));
    JFrame frame = new JFrame();
    frame.setContentPane(p);
    frame.pack();
    frame.setVisible(true);
  }
}

class ImagePanel extends JPanel {
  private Image img;

  public ImagePanel(ImageIcon icon) {
    this.img = icon.getImage();
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setMinimumSize(size);
    setMaximumSize(size);
    setPreferredSize(size);
    setSize(size);
    setLayout(null);
  }

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

Zo. Lees deze code eens op je gemak door, en je zal het wel gauw begrijpen.
Veel succes!:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan