Changer la bordure d'une JFrame

Fermé
Cotton - 18 déc. 2015 à 22:11
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 - 16 janv. 2016 à 23:16
Soir'bon à tous,

J'aimerai savoir comment changer la bordure d'un JFrame.

Dans l'idée, j'ai une JFrame, auquel j'applique la méthode setUndecorated(true) afin d'enlever la bordure.
Maintenant, j'ai fait un cadre sous Photoshop que je voudrais incorporer à la bordure de la JFrame.

De plus, ma JFrame comporte plusieurs Panels. Je voudrais aussi mettre des images de fond dans chacun de ses panels. PS : Les Panels comportent des JButton et par conséquent, les images doivent passer "en dessous" comme un background.


Je vous remercie,

Cotton

A voir également:

2 réponses

Bonsoir,

Merci pour votre réponse.

J'ai une autre question :

J'ai un panel vPanelRight :

JPanel vPanelRight = new JPanel()
{
Image bg = new ImageIcon("bouton test.png").getImage();

@Override
public void paintComponent(Graphics g)
{
g.drawImage(bg, 0, 0, null);
}
};

Sous cette forme, j'arrive à appliquer une image en fond du Panel. Très bien, c'est ce que je veux.

Néanmoins, j'ajoute un BorderLayout à ce Panel et, à l'intérieur, des bouttons :

vPanelRight.setLayout(new BorderLayout());
vPanelCenter.add(vPanelRight, BorderLayout.EAST);
vPanelRight.add(aButtonNorth, BorderLayout.NORTH);
vPanelRight.add(aButtonEast, BorderLayout.EAST);
vPanelRight.add(aButtonSouth, BorderLayout.SOUTH);
vPanelRight.add(aButtonWest, BorderLayout.WEST);

Le problème qui se présente est que, lorsque je clique sur l'un des boutons (ou même que je passe ma souris dans le Panel), l'image en background du Panel se retrouve perturbée. De manière aléatoire, elle va se dupliquer, prendre un nouvelle place dans le Panel (en fond toujours) et se superposer.

Pour résumer, ma technique ne marche que si je ne touche pas les boutons. Or cela n'est pas possible. Je veux que l'image reste statique.

Je vous remercie,

Cordialement,

Cotton
1
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 107
20 déc. 2015 à 03:13
Essai d'ajouter les méthode
repaint();
et
revalidate();
dans l'exécution des listeners de tes boutons
0
Je vois leur utilité.

Mais où dois-je les ajouter. Pour un bouton, j'ai deux listener, un pour l'action et l'autre pour changer l'image du bouton lors d'un appuie :

JButton aButtonNorth = new JButton();

setConfigButton(aButtonNorth, "NORTH", "bouton1.png", 70, 70);


public static void setConfigButton(final JButton pButton, final String pText, final String pImage, final int pSizeX, final int pSizeY)
{
pButton.setText(pText);
pButton.setIcon(new ImageIcon(pImage));
pButton.setPreferredSize(new Dimension(pSizeX, pSizeY));
pButton.setVerticalTextPosition(SwingConstants.CENTER);
pButton.setHorizontalTextPosition(SwingConstants.CENTER);
pButton.setBorderPainted(false);
pButton.setContentAreaFilled(false);
pButton.setFocusPainted(false);
pButton.setOpaque(false);
}


public static void setMouseListener(final JButton pButton, final String pStringUnPressed, final String pStringPressed)
{
pButton.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
pButton.setIcon(new ImageIcon(pStringPressed));
}

@Override
public void mouseReleased(MouseEvent e)
{
pButton.setIcon(new ImageIcon(pStringUnPressed));
}
});
}

public void actionPerformed(final ActionEvent pEvent)
{
String vSource = pEvent.getActionCommand();
Command vCommand = aParser.getCommand(vSource);

if(vCommand != null)
{
aEngine.interpretCommand(vCommand);
}
else
{
processCommand();
}
}


Sachant que j'ai deux listener, on peut dire, où dois-je loger les deux méthodes ?

Merci
0
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 107
16 janv. 2016 à 23:16
Désolé pour la réponse tardive mais si jamais tu n'as pas encore résolu ton soucis il faut que tu appels ces méthodes aprés les changement visuels de ton bouton, donc à la fin de ton listener je présume :)
0
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 107
19 déc. 2015 à 12:35
Hello, en fonction de l'ordre d'ajout de test éléments sur ton JPanel ils se superposeront (si ton layout le permet et qu'il est bien configuré pour chacun de tes éléments). Autrement dit tu peux ajouter ton imageà ton Panel qui fait la taille exact de celui ci en tout premier et ensuite tu ajoutes tes autres éléments etc...

Voilà un exemple de fenêtre restylisé.

Mes boutons pour fermer et réduire la fenêtre sont bien visible car ajouter au panel après le background ;)

0