Salve a tutti, vorrei creare un programma dove non sia visibile la barra che c'è sopra ogni finestra, giusto per capirsi quella con "chiudi a icona", "ripristina" e "chiudi".
E' possibile?
Se si, qual è il metodo per farlo?
Grazie.
Salve a tutti, vorrei creare un programma dove non sia visibile la barra che c'è sopra ogni finestra, giusto per capirsi quella con "chiudi a icona", "ripristina" e "chiudi".
E' possibile?
Se si, qual è il metodo per farlo?
Grazie.
T.
Ma vedo che parecchi avete litigato con il javadoc![]()
Grazie per la risposta
Purtroppo il problema è che non ho idea di come si chiama la fantomatica barra, e non poso certo dire: "ehi javadoc! come levo la barra, sai, quella sopra?". :P
T.
Beh dai, con un minimo di ragionamento trovi tutto, poi basta sapere usare i motori di ricercaOriginariamente inviato da TommyDelVed
Grazie per la risposta
Purtroppo il problema è che non ho idea di come si chiama la fantomatica barra, e non poso certo dire: "ehi javadoc! come levo la barra, sai, quella sopra?". :P
Cosa c'è in quella barra? Il titolo della finestra. Prova a cercare su google una cosa tipo
jframe remove title bar![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
RIAPRO il thread poichè ho riscontrato un problema:
Per far scomparire la barra con i tasti "chiudi", etc, ho utilizzato il metodo setUndecorated(true) , che ha funzionato, ma causa un problema.
Non elimina solo la barra con il titolo e i pulsanti in questione, ma anche tutto il bordino attorno alla finestra, e tutto questo implica che, se non da codice, io non ho più la possibilità di ridimensionare o spostare la gui.
Quindi, la mia domanda è:
Esiste un altro metodo per evitare tutto questo? (io non l'ho trovato)
Nel qual caso mi debba tenere questo, posso creare due pulsanti che attivino o meno ("In corsa") il comando?
Così se devo ridimensionarla o spostarla clicco il pulsante, faccio quello devo fare e poi disattivo di nuovo il tutto.
Se si può fare, potete postare un frammento di codice esplicativo?
Grazie.
T.
In effetti è vero un Componente non decorato non ha i bordi quindi ovviamente non vi è possibilità di ridimensionarlo....
Ma dato che siamo programmatori (sarcasmo ON....) basta gestire il ridimensionamento...
Quindi ti basta aggiungere un MouseMotionListener e gestire i vari eventi che vengono scaturiti....
Per usare questo codice ti basta richiamare "addMouseMotionListener(new ResizeListener());". Questo vuole essere un esempio ovviamente modificalo ed adattalo al tuo codice.codice:public class ResizeListener extends MouseMotionAdapter { public void mouseMoved(MouseEvent e) { JFrame component = (JFrame) e.getComponent(); if (e.getX() < 10 || e.getX() > (component.getWidth() - 10) || e.getY() < 10 || e.getY() > (component.getHeight() - 10)) { ((JPanel) component.getContentPane()).setBorder(BorderFactory .createEtchedBorder()); } else { ((JPanel) component.getContentPane()).setBorder(BorderFactory .createEmptyBorder()); } } public void mouseDragged(MouseEvent e) { JFrame component = (JFrame) e.getComponent(); Rectangle bounds = component.getBounds(); Point p = e.getPoint(); if (p.x < 10) { component.invalidate(); SwingUtilities.convertPointToScreen(p, component.getContentPane()); int diff = bounds.x - p.x; bounds.x = p.x; bounds.width += diff; component.setBounds(bounds); component.validate(); } else if (e.getX() > (component.getWidth() - 10)) { component.invalidate(); bounds.width = p.x; component.setBounds(bounds); component.validate(); } else if (e.getY() < 10) { component.invalidate(); SwingUtilities.convertPointToScreen(p, component.getContentPane()); int diff = bounds.y - p.y; bounds.y = p.y; bounds.height += diff; component.setBounds(bounds); component.validate(); } else if (e.getY() > (component.getHeight() - 10)) { component.invalidate(); bounds.height = p.y; component.setBounds(bounds); component.validate(); } } }
Francesco.![]()
Grazie mille per la rispostaOriginariamente inviato da francesco.muia
In effetti è vero un Componente non decorato non ha i bordi quindi ovviamente non vi è possibilità di ridimensionarlo....
Ma dato che siamo programmatori (sarcasmo ON....) basta gestire il ridimensionamento...
Quindi ti basta aggiungere un MouseMotionListener e gestire i vari eventi che vengono scaturiti....
Per usare questo codice ti basta richiamare "addMouseMotionListener(new ResizeListener());". Questo vuole essere un esempio ovviamente modificalo ed adattalo al tuo codice.codice:public class ResizeListener extends MouseMotionAdapter { public void mouseMoved(MouseEvent e) { JFrame component = (JFrame) e.getComponent(); if (e.getX() < 10 || e.getX() > (component.getWidth() - 10) || e.getY() < 10 || e.getY() > (component.getHeight() - 10)) { ((JPanel) component.getContentPane()).setBorder(BorderFactory .createEtchedBorder()); } else { ((JPanel) component.getContentPane()).setBorder(BorderFactory .createEmptyBorder()); } } public void mouseDragged(MouseEvent e) { JFrame component = (JFrame) e.getComponent(); Rectangle bounds = component.getBounds(); Point p = e.getPoint(); if (p.x < 10) { component.invalidate(); SwingUtilities.convertPointToScreen(p, component.getContentPane()); int diff = bounds.x - p.x; bounds.x = p.x; bounds.width += diff; component.setBounds(bounds); component.validate(); } else if (e.getX() > (component.getWidth() - 10)) { component.invalidate(); bounds.width = p.x; component.setBounds(bounds); component.validate(); } else if (e.getY() < 10) { component.invalidate(); SwingUtilities.convertPointToScreen(p, component.getContentPane()); int diff = bounds.y - p.y; bounds.y = p.y; bounds.height += diff; component.setBounds(bounds); component.validate(); } else if (e.getY() > (component.getHeight() - 10)) { component.invalidate(); bounds.height = p.y; component.setBounds(bounds); component.validate(); } } }
Francesco.![]()
Purtroppo non mi ero mai avvicinato ad un codice simile a questo, e quindi non capisco molto.
Potresti consigliarmi dove poter andare a leggere qualcosa a riguardo?
Grazie ancora![]()
T.
Uhm... Cosi in generale...
Cerca di essere più preciso, cos'è che non ti è chiaro ?
Cercherò di spiegarmi narrandoti cosa ho fatto :POriginariamente inviato da francesco.muia
Uhm... Cosi in generale...
Cerca di essere più preciso, cos'è che non ti è chiaro ?
Ho letto il tuo codice, ho più o meno capito cosa fa, ma non sarei in grado di modificarlo.
L'ho copia incollato così com'è sul mio codice, avviato e il risultato è stato che se vado a "sbattere" contro i bordi della finestra, tenendo premuto il mouse, questa si allarga o si restringe.
E fin qua ci sta tutto.
Quello che mi domando, e da qui ti chiedevo dove posso trovare una documentazione, è se posso fare questa cosa solo se seleziono il bordo della finestra, poichè così com'è adesso se uno la schiaccia accidentalmente questa si ingrandisce in maniera apparentemente casuale (se l'utente non conosce questa funzione).
E poi, siccome ho aggiunto questo frammento:
Per poter trascinare la finestra in giro per lo schermo, ottengo che se la voglio spostare, questa si ingrandisce :Scodice:addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { X = e.getX(); Y = e.getY(); } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { setLocation(getLocation().x + (e.getX() - X),getLocation().y + (e.getY() - Y)); } });
Quindi, siccome non voglio essere quello che chiede il codice, lo copiaincolla e poi è apposto, chidevo dove poter trovare una documentazione adeguata, a meno che tu non sia così tanto gentile da spiegarmi il funzionamento del tutto
Grazie ancora.
T.