Ist es möglich ein JPanel in ein anderes JPanel einzubetten ? ich erstelle Panels in die Bilder eingefügt werden und weise diesen Panels dann LIstener zu, dies hat den Hintergrund das ich Bildern einen Mauslistener zuweisen wollte was
leider direkt nicht ging. Nun will ich mehrere dieser ImagePanels in ein anderes Panel einbette, so wie ich das hier mache klappt das leider aber nicht, geht das überhaupt und wenn ja was mache ich falsch ? hier mein Code
wenn ich das Image Panel direkt in das Frame adde klappts aber ich brauch das in nem anderen Panel
also das hier geht:
leider direkt nicht ging. Nun will ich mehrere dieser ImagePanels in ein anderes Panel einbette, so wie ich das hier mache klappt das leider aber nicht, geht das überhaupt und wenn ja was mache ich falsch ? hier mein Code
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
public class asdf
{
public static void main(String[] args) {
// Create and set up the window.
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setLayout(null);
JPanel muh = new JPanel();
ImagePanel imagePanel = new ImagePanel(new File("logo.gif"),"muh");
ImagePanel test = new ImagePanel(new File("logo.gif"),"gurr");
imagePanel.setLocation(20, 20);
imagePanel.setBackground(Color.RED);
JPanel muh1 = new JPanel();
muh1.add(imagePanel);
frame.add(muh1);
frame.setVisible(true);
}
public static class ImagePanel extends JPanel {
private BufferedImage image;
public ImagePanel(File f, String s) {
try {
image = ImageIO.read(f);
int width = image.getWidth( );
int height = image.getHeight( );
this.setSize(width, height);
this.setToolTipText(f.getAbsolutePath( ));
this.addMouseListener(new MouseAdapter( ) {
public void mouseClicked(MouseEvent evt) {
System.out.println("Mouse clicked");
}});
}
catch (IOException e) {
e.printStackTrace( );
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.drawImage(image,0,0, this);
}
g.drawLine(10,10,30,20);
}
}
}
wenn ich das Image Panel direkt in das Frame adde klappts aber ich brauch das in nem anderen Panel
also das hier geht:
Code:
frame.add(imagePanel);