10/02/12 14:50
Blackman
Buongiorno a tutti, sono nuovo del forum e del linguaggio Java... per cercare di imparare mi dedico ad un po' di prove, ma ho trovato diverse difficoltà con le interfacce grafiche. E' il primo linguaggio ad oggetti che affronto, quindi capirete che alcuni concetti non mi siano proprio immediati.
Il problema è questo: voglio un JInternalFrame (che conterrà un JMenù su di un JDesktopPane (che funge da background, con immagine). Visualizzo lo sfondo, ma il JInternalFrame viene inesorabilmente visualizzato "dietro" o "sotto" il background... esiste (in quanto se lo clicco con il mouse lo posso trascinare, vedendo ovviamente un pezzo di sfondo che si muove) ma non si vede. Ho provato diverse soluzioni ed ho letto quanto ho trovato in rete, ma evidentemente, sbaglio qualcosa o non vedo chiaramente dove sia il problema.
il codice è questo:
Spero di non essermi perso nulla nel copia-incolla.
Grazie a chiunque voglia provare ad aiutarmi.
Il problema è questo: voglio un JInternalFrame (che conterrà un JMenù su di un JDesktopPane (che funge da background, con immagine). Visualizzo lo sfondo, ma il JInternalFrame viene inesorabilmente visualizzato "dietro" o "sotto" il background... esiste (in quanto se lo clicco con il mouse lo posso trascinare, vedendo ovviamente un pezzo di sfondo che si muove) ma non si vede. Ho provato diverse soluzioni ed ho letto quanto ho trovato in rete, ma evidentemente, sbaglio qualcosa o non vedo chiaramente dove sia il problema.
il codice è questo:
// vari import... public class backg extends JPanel { static boolean resizable = false; static boolean closeable = false; static boolean maximizable = false; static boolean iconifiable = false; private static JInternalFrame Internalframemenu() { String title = "Menù"; JInternalFrame internalframemenu = new JInternalFrame(title, resizable, closeable, maximizable, iconifiable); return internalframemenu; } private static void GUI () throws PropertyVetoException { JFrame frame = new JFrame("prova"); frame.setExtendedState(JFrame.MAXIMIZED_BOTH); frame.setDefaultCloseOperation(JInternalFrame.EXIT_ON_CLOSE); frame.repaint(); JDesktopPane backgnd = new Background(); backgnd.setOpaque (false); backgnd.repaint(); backgnd.setVisible(true); frame.getContentPane().add(backgnd); JInternalFrame internalframemenu = Internalframemenu(); internalframemenu.moveToFront(); internalframemenu.setSelected(true); internalframemenu.repaint(); frame.setVisible(true); backgnd.add(internalframemenu); internalframemenu.setBounds(50,50,300,300); internalframemenu.show(); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { try { GUI(); } catch (PropertyVetoException e) { e.printStackTrace(); } } }); } public static class Background extends JDesktopPane { private Image img; public Background(String sourceimg) { String pathbg; pathbg = "C:\Users\...\img1.jpg"; } img = Toolkit.getDefaultToolkit().createImage (pathbg); loadimage(img); } private void loadimage (Image img) { try { MediaTracker track = new MediaTracker(this); track.addImage(img, 0); track.waitForID(0); } catch (InterruptedException e) { e.printStackTrace(); } } public void paint (Graphics g) { g.drawImage(img, 0, 0, null); super.paintComponent(g); setOpaque (false); } } }
Spero di non essermi perso nulla nel copia-incolla.
Grazie a chiunque voglia provare ad aiutarmi.
aaa