Changer la bordure d'une JFrame
Cotton
-
greg6614 Messages postés 592 Date d'inscription Statut Membre Dernière intervention -
greg6614 Messages postés 592 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Changer la bordure d'une JFrame
- Changer dns - Guide
- Bordure de page word - Guide
- Changer carte graphique - Guide
- Changer wifi chromecast - Guide
- Changer extension fichier - Guide
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
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
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 ;)
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 ;)

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