ciao a tutti,
volevo sapere come faccio a creare 4 jpanel differenti posti in un unico jframe e poi caricare immagini differenti per ogni jpanel...
praticamente a ogni messaggio che mi arriva, leggo l'id del messaggio e in base a questo id cambio l'immagine del jpanel corrispondente... ora ho un unico jpanel e ogni vvolta che mi arriva un messaggio mi si cancella l'iimagine precedente e viene ricreata quella nuova (penso che venga creto un nuovo jpanel tutte le volte, non va bene!!!)...
scusate ma non ne capisco molto di java...
codice:import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.awt.color.*; public class DemoImage extends JFrame { public static JFrame frame = new JFrame("My JFrame"); public static int WIDTH=300; public static int HEIGHT=300; //public static ImagePanel panel; //public JPanel panel = new JPanel(); public ImagePanel panel; public void setJFrame() { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(WIDTH, HEIGHT); frame.setResizable(true); frame.setLocationRelativeTo(null); frame.validate(); frame.setVisible(true); } public void showImage() { panel= new ImagePanel(BIGMSG.image); //corretta!!! legge l'immagine dai byte //JPanel panel = new JPanel(); frame.getContentPane().add(panel, BorderLayout.CENTER); panel.setVisible(true); //se false,no si vede niente panel.setDoubleBuffered(true);// ??? forse serve per una specie di buffer, mi fa vedere tutte le immagini e non solo la fragola panel.setBackground(Color.white); panel.setBorder(BorderFactory.createLineBorder(Color.black)); panel.setOpaque(true); } } class ImagePanel extends JPanel{ private Image image; private Dimension dim=null; public ImagePanel(String image) { this(new ImageIcon(image).getImage()); } public ImagePanel(Image image){ this.image=image; dim=new Dimension(); dim.width=WIDTH; dim.height=HEIGHT; setPreferredSize(dim); } public void resetImage(Image image){ this.image=image; repaint(); } public void paintComponent(Graphics g) { if(image!=null){ super.paintComponent(g); g.drawImage(image,BIGMSG.numero_nodo*30,BIGMSG.numero_nodo*30,null); } } }

Rispondi quotando