Die Größe der Zeichnung zu match-frame-Größe
Ich geschrieben habe, eine app, die benutzerdefinierte zieht alles in paint (), die sich auf Feste pixel-Positionen. Dann deaktivierte ich die Größe des Rahmens so ist es immer sichtbar.
Aber jetzt möchte ich in der Lage sein, um die Größe zu verändern, aber ich möchte nicht, dass meine Fäden code. Ich hatte gehofft, ich könnte greifen Sie die 300x300 quadratisch von der Grafik g Objekt und ändern Sie die Größe des JFrame aktuelle Größe nach alle meine Fäden code, aber ich habe keine Ahnung, was ich Tue.
Hier Beispiel-code. In diesem möchte ich die 100x100 Platz zu bleiben, in der Mitte, im Verhältnis zu der Größe verändert JFrame:
package DrawAndScale;
import java.awt.Color;
import java.awt.Graphics;
public class DASFrame extends javax.swing.JFrame {
public DASFrame() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
this.setSize(300, 300);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new DASFrame().setVisible(true);
}
});
}
@Override
public void paint(Graphics g) {
g.setColor(Color.BLACK);
g.fill3DRect(100, 100, 100, 100, true);
}
}
Dank.
- Sie sollten nie überschreiben der paint () - Methode ein JFrame (es sei denn, Sie wirklich wissen, was Sie tun). Custom-painting erfolgt durch überschreiben der paintComponent () - Methode des JPanel oder JComponent.
- Der code zeichnet alles auf eine Leinwand in das JFrame, ich zog an der Spitze für die Kürze. Aber danke, da ich wirklich nicht weiß, was ich Tue.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie benennen Sie die Methode, die Farben für 300x300 als paint300, definieren eine gepufferte Bild:
Oben ist, wenn Sie zeichnen möchten, in voller Größe (300x300).
Wenn Ihr Fenster in der Größe geändert wird:
Den neuen Klassen sind aus java.das awt.Bild.*.
Ich nicht diesen code testen. Es ist nur zu senden, Sie in die richtige Richtung.
wenn Sie möchten, um Benutzerdefinierte Gemälde malen, dann suchen Sie für JLabel oder JPanel einschließlich Symbol/ImageIcon innen, einfaches Beispiel darüber, dass
Kein Experte, aber du könntest einfach skalieren Sie die Graphics2D-Objekt (das übergeben von Grafiken ist in Wirklichkeit ein Graphics2D-Instanz), wo die x-und y-Verhältnisse sind die Verhältnisse der festen Größe, die Sie wählten zu zeichnen und die tatsächliche Größe des Rahmens.
Sehen http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html#scale%28double,%20double%29
Man könnte dies mit etwas Mathe.
Oder, wenn Sie wollten, zu halten die Breite und Höhe der box mit dem gleichen Anteil, verwenden
int width = this.getWidth() /3;
undint height = this.getHeight() /3
.Die andere Möglichkeit ist die Verwendung
Graphics2D.scale()
, als die JB darauf hingewiesen, dass der übergebeneGraphics
- Objekt ist eigentlich einGraphics2D
Objekt.