J'utilise JFrame et j'ai gardé une image de fond sur mon cadre. Maintenant, le problème est que la taille de l'image est plus petite que la taille de la trame, donc je dois garder la même image une fois de plus sur la partie vide de la fenêtre. Si l'utilisateur clique sur le bouton agrandir, il se peut que je doive placer l'image sur une zone vide de la trame au moment de l'exécution. Quelqu'un peut-il me dire comment accomplir cela?java swing image de fond
Répondre
Vous voulez quelque chose comme l'image d'arrière-plan du bureau de Windows, lorsque vous utilisez plusieurs fois l'image d'arrière-plan au lieu de la redimensionner ou simplement l'afficher au centre?
Vous ne devez conserver l'image qu'une seule fois et la peindre plusieurs fois dans la méthode paintComponent.
Pouvez-vous me donner un exemple de code pour cela. si tu as. Ce sera une aide précieuse pour moi. S'il vous plaît? – Nilesh
Voir l'exemple de finnw –
Il semble que vous parliez de carrelage par rapport à l'étirement, bien que le comportement souhaité ne soit pas clair.
Ce programme a des exemples à la fois:
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main {
public static void main(String[] args) throws IOException {
final Image image = ImageIO.read(new URL("http://sstatic.net/so/img/logo.png"));
final JFrame frame = new JFrame();
frame.add(new ImagePanel(image));
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
@SuppressWarnings("serial")
class ImagePanel extends JPanel {
private Image image;
private boolean tile;
ImagePanel(Image image) {
this.image = image;
this.tile = false;
final JCheckBox checkBox = new JCheckBox();
checkBox.setAction(new AbstractAction("Tile") {
public void actionPerformed(ActionEvent e) {
tile = checkBox.isSelected();
repaint();
}
});
add(checkBox, BorderLayout.SOUTH);
};
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (tile) {
int iw = image.getWidth(this);
int ih = image.getHeight(this);
if (iw > 0 && ih > 0) {
for (int x = 0; x < getWidth(); x += iw) {
for (int y = 0; y < getHeight(); y += ih) {
g.drawImage(image, x, y, iw, ih, this);
}
}
}
} else {
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
}
}
Merci beaucoup pour votre réponse son fonctionnement ... – Nilesh
Salut, avez-vous des recommandations sur la façon de mosaïquer l'image, au lieu de l'étirer, afin de maintenir la qualité de l'image? – NumenorForLife
Une autre façon de paver une image est avec TexturePaint
:
public class TexturePanel extends JPanel {
private TexturePaint paint;
public TexturePanel(BufferedImage bi) {
super();
this.paint = new TexturePaint(bi, new Rectangle(0, 0, bi.getWidth(), bi.getHeight()));
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(paint);
g2.fill(new Rectangle(0, 0, getWidth(), getHeight()));
}
}
- 1. Fond de Java Swing Fade Out
- 2. image de fond JToolBar
- 3. chevauchement image de fond
- 4. image de fond CSS
- 5. Java Swing JButton
- 6. Image image de fond pour UIButton
- 7. UIButton image/image de fond weirdness
- 8. Java Swing Problème
- 9. Swing JButton arrondi en utilisant Java
- 10. Java Swing JButton
- 11. Image de fond pour MoreNavigationController
- 12. centre une image de fond
- 13. Animer image de fond div
- 14. ASP.NET Treeview Image de fond
- 15. image de fond pour wrap_content
- 16. CSS - image de fond multiple
- 17. UINavigationBar Image de fond Problème
- 18. fond Iphone/ipad Image
- 19. Fenêtre Swing Java corrompue
- 20. Java Swing JToolBar
- 21. Java (SWING) travaillant avec rotation
- 22. Java Swing Table taille
- 23. Problème java swing clipping
- 24. Image sur fond Image dans Blackberry
- 25. Java swing JComponent "taille"
- 26. Image de fond fenêtre de remplissage
- 27. image de fond de cellule sélectionnée
- 28. Effet de bordure de verre Vista dans Java Swing/AWT
- 29. Propriétés Java Swing (addPropertyChangeListener)
- 30. Java Swing GUI - Problème
« Je dois garder la même image une nouvelle fois sur la partie vide » doesn n'a pas de sens pour moi. Pouvez-vous créer une image avec ce que vous avez et ce que vous voulez, s'il vous plaît? –