Ich benutze JFrame und ich habe ein Hintergrundbild auf meinem Rahmen gehalten. Jetzt ist das Problem, dass die Größe des Bildes kleiner als die Größe des Rahmens ist, also muss ich das gleiche Bild noch einmal auf dem leeren Teil des Fensters behalten. Wenn der Benutzer auf die Schaltfläche "Maximieren" klickt, muss ich das Bild möglicherweise zur Laufzeit in einen leeren Bereich des Rahmens setzen. Kann mir jemand sagen, wie ich das erreichen soll?Java Swing Hintergrundbild
Antwort
Sie möchten etwas wie das Hintergrundbild des Windows-Desktops, wenn Sie das Hintergrundbild mehrmals verwenden anstatt es zu skalieren oder es nur zentriert anzuzeigen?
Sie müssen das Bild nur einmal speichern und in der paintComponent-Methode nur mehrmals malen.
Können Sie mir einen Beispielcode dafür geben? Wenn Sie haben. Es wird mir eine große Hilfe sein. Bitte? – Nilesh
Sehen Sie das Beispiel von finnw –
Es klingt, als ob Sie über Tiling vs. Stretching sprechen, obwohl es nicht klar ist, welches Verhalten Sie wollen.
Dieses Programm hat Beispiele für beide:
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);
}
}
}
Vielen Dank für Ihre Antwort seine Arbeit ... – Nilesh
Hallo, haben Sie irgendwelche Empfehlungen für das Kacheln des Bildes, anstatt es zu dehnen, um die Qualität des Bildes zu erhalten? – NumenorForLife
andere Art und Weise zu Kachel ein Bild mit 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. Wie das Hintergrundbild auf eine Schaltfläche in java swing setzt
- 2. Java Swing Tastenbelegung
- 3. Java Swing Threading
- 4. Java Swing JTree Expansion
- 5. Microbreaks - Java Swing-Tool
- 6. java Swing Taste Aktion
- 7. java swing - malen jcomponent
- 8. Positionierung in Java Swing
- 9. Java Swing Animation
- 10. Java Swing validieren Textfeld
- 11. MVC Java Swing qestion
- 12. Java Swing ActionMap Tasten
- 13. Java Swing Timer Probleme
- 14. Java Swing JMenu Mnemonic
- 15. Java, Swing, Gridlayout Problem
- 16. Anwendungsbreite Tastaturkürzel - Java Swing
- 17. Java Swing - bessere Schriftglättung
- 18. Java Swing Grafikfehler?
- 19. Java Swing-Schnittstelle Problem
- 20. Java Swing Timer
- 21. Java Swing Mixing Scheiben
- 22. Java Swing paintComponent() überschreiben
- 23. Java Swing-Layout nicht
- 24. Java Swing Font Chooser
- 25. Java Swing Tastenfarben
- 26. Java Swing Barcode Erstellung
- 27. Java Swing setMaximumSize nicht
- 28. Java Swing: repaint() vs
- 29. Verständnis Schwierigkeiten Java Swing
- 30. Beschädigtes Java-Swing-Fenster
„i das gleiche Bild zu halten, haben noch einmal auf den leeren Teil“ doesn Für mich ergibt das keinen Sinn. Kannst du bitte ein Bild mit dem, was du hast und was du willst, erstellen? –