2011-03-25 2 views
1

Comment manipuler le cadre de fenêtre avec balançoire en java? Comme comment changer la couleur, comment faire pour qu'il ne soit pas le style par défaut du thème PC, mais pour être une image par exemple?Cadre de fenêtre battante Java

+2

Commencez ici http://download.oracle.com/javase/tutorial/uiswing/components/frame.html et suivez les liens –

Répondre

0

Autant que je sache, il n'y a pas moyen de le faire. Vous pouvez créer une propre classe pour vos fenêtres personnalisées qui étend JWindow par exemple. Vous pouvez créer le style vous-même alors. C'est juste un petit travail à faire.

// add pacakge and imports as needed... 

/** 
* Sample class implementation for windows with own frame style. 
* Additional constructors may be added as needed. Default constructor used 
* to show principle. 
*/ 
public class MyWindow extends JWindow { 
    public MyWindow() { 
     super(); 
     initUI(); 
    } 

    private void initUI() { 
     setLayout(new BorderLayout()); 
     add(new MyWindowFrameTop(this)); 
     add(new MyWindowFrameLeft(this)); 
     add(new MyWindowFrameRight(this)); 
     add(new MyWindowFrameBottom(this)); 
    } 
} 

JWindow est un «citoyen de première classe» comme le dit le document API Java. Il s'agit d'une fenêtre complète dans le bureau mais il manque toutes les implémentations pour les actions de la fenêtre comme fermer, agrandir, minimiser et le menu de la fenêtre. L'implémentation de ces fonctionnalités peut être ajoutée comme ci-dessus en utilisant BorderLayout et en mettant en oeuvre les propres implémentations des objets frame. Les objets MyWindowFrameXXX peuvent être des JPanels qui dessinent les parties de boîte de cadre voulues, l'image du titre et ainsi de suite. Il est également possible d'ajouter des boutons pour les actions de fenêtre et d'implémenter des actions de souris pour le redimensionnement. Pour implémenter cela, les objets frame ont besoin de la référence des fenêtres parentes pour effectuer toutes les actions sur la fenêtre.

Il serait bien trop loin ici pour tout écrire ici. Je pense que le principe est montré et je ne sais pas non plus quel est l'effet réel à mettre en œuvre.

+0

Pouvez-vous me donner un exemple? – weardstuff

1

Pour modifier la couleur, vous pouvez utiliser la méthode setBackground (Color c) sur un objet cadre ou un objet de panneau. exemple:

JFrame fr=new JFrame("Color demo"); 
fr.setBackground(Color.red); // color set to red 
fr.setSize(900,200);   // size changed 
fr.setResizable(false);  // you cant resize your window now 

Pour personnaliser davantage votre cadre java, vous pouvez suivre this ou this one. Vous pouvez obtenir un début de swing sur this website

+0

note que vous pouvez utiliser setBackground (couleur c) pour d'autres composants swing aussi –

+0

je veux dire le cadre où est le bouton de sortie, pas le fond – weardstuff

0

Tout ce qui a à voir avec l'apparence des fenêtres dans Swing peut être géré par le Look and Feel (LaF). Voir the LaF tag pour plus d'informations (je l'ai écrit). La plupart des looks-and-feel stylisent le contenu de la fenêtre et tous les composants à l'intérieur.

Il existe un certain nombre de LaF par défaut fournis avec Swing dans le JDK. Ils comprennent, Motif, Métal et Synth (qui est un style vide que vous vous personnalisez). Il y en a beaucoup d'autres que vous pouvez trouver et télécharger en ligne. Vous pouvez utiliser n'importe lequel d'entre eux en les plaçant dans votre chemin de classe et en exécutant UIManager.setLookAndFeel(...) dans votre méthode principale, avant d'afficher votre interface graphique.

Il semble que vous cherchiez spécifiquement un moyen de personnaliser les cadres de fenêtres, ce qui n'est pas souvent le cas. Personnellement, je ne le recommande pas, mais si vous voulez vraiment, vous pouvez désactiver les décorations de cadre en appelant setUndecorated(true) sur un Window. Vous êtes ensuite parti avec une fenêtre sans bordure. Vous devez ensuite décider comment vous souhaitez ré-implémenter les fonctionnalités de la fenêtre que vous souhaitez, comme la fermeture avec un bouton de fermeture personnalisé.