Screenshot einer Anwendung erstellen

Status
Nicht offen für weitere Antworten.

AMiGA

Bekanntes Mitglied
Hallo zusammen,

haut mich nicht, ich habe sehr wohl das Forum zuerst durchsucht! :) Ich würde gerne einen Screenshot einer vollständigen Anwendung machen. Ich habe bislang zwei Möglichkeiten versucht, beide funktionieren nicht:

1. mit Hilfe von java.awt.Robot.createScreenCapture(frame.getBounds());
Hierbei ist das Problem, dass ich die Anwendung weder mit toFront noch setAlwaysOnTop garantiert immer in den Vordergrund bekomme und somit (wenn auch nur manchmal) einen unvollständigen Bildschirmabdruck erhalte.

2. mit Hilfe von
Graphics g = bufferedImage.createGraphics();
frame.paint(g);
Hierbei ist das Problem, dass ich zwar immer einen sauberen Abdruck vom Frame erhalte, auch wenn er im Hintergrund ist, aber leider halt nur vom Frame selber und nicht von eventuell vorhandenen anderen Fenstern im Vordergrund (die zur Anwendung gehören). Auch paintAll hilft hier leider nicht weiter.

Hat vielleicht irgendjemand eine Idee, wie man einen Screenshot erstellen kann, der immer einwandfrei wird, auch wenn die Anwendung irgendwo im Hintergrund läuft?

Gruß,
AMiGA
 

Wildcard

Top Contributor
Code:
Graphics g = bufferedImage.createGraphics();
frame.paint(g);
Wenn du das mit allen Fenstern/Dialogen machst geht das.
 

AMiGA

Bekanntes Mitglied
Du meinst zuerst mit dem Hauptframe und dann danach mit all seinen Kindern? Ich würde aber gerne alles in einem Bild haben, so wie bei einem "echten" Screenshot. Ich dachte eigentlich, dass paintAll genau das machen würde...
 

Wildcard

Top Contributor
hast du doch danach. Du musst einfach das gleiche Graphics-Objekt an alle Childs weiterreichen...
EDIT:
AMiGA hat gesagt.:
Ich dachte eigentlich, dass paintAll genau das machen würde...
Schon, aber nur Subcomponents was Dialoge, andere Fenster nicht betrifft (einfacher: nur die lightweights im Frame werden gezeichnet)
 

AMiGA

Bekanntes Mitglied
Stimmt, müsste eigentlich gehen. Bin nicht darauf gekommen, dass ich mehrfach in das gleiche Graphics-Objekt schreiben kann. Danke!
 

AMiGA

Bekanntes Mitglied
Leider habe ich dabei immer noch zwei Probleme:

- zum einen wird auf diese Weise die Titelzeile der JFrames komlett schwarz im Screenshot, keine Ahnung warum

- und zum anderen werden die Child-Frames alle links oben im Screenshot eingefügt und nicht an der Stelle, wo sie auch wirklich auf dem Bildschirm angeordnet sind

Hat vielleicht irgendjemand eine Idee, was ich machen kann, damit die Child-Frames an der korrekten Stelle erscheinen und die Kopfzeile der Frames ebenfalls korrekt dargestellt wird?
 

Reality

Top Contributor
Hallo erstmal! :)

Versuch´s mal damit:

Code:
frame.getLayeredPane().paintComponents(g);

evtl. vielleicht auch so:

Code:
frame.paint(g);
frame.getLayeredPane().paintComponents(g);

Weil soweit ich weiß, enthält paintComponents() nur POP-UPs, tooltips usw.

Liebe Grüße
Reality
 

AMiGA

Bekanntes Mitglied
Hi,

getLayeredPane().paintComponents zeichnet leider auch nicht die Titelleiste sowie den Rahmen vom JFrame ;(

Dafür klappt mittlerweile das Ausrichten der Child-Frames via graphicsObjekt.translate(x,y).

Gruß,
AMiGA
 

AMiGA

Bekanntes Mitglied
Hat keiner eine Idee, wieso bei oben genannter Methode die Titelzeile sowie der Rahmen eines JFrames schwarz gezeichnet werden?
 

KISS

Bekanntes Mitglied
ja, weil das (unter windows) von der system api gemacht wird, die aber in einem systemkontext und nicht in deinem grafikcontext laeuft. (jdenfalls afair, wenn du z.b auf das motiv plaf schaltest koennte es gehen)
 

AMiGA

Bekanntes Mitglied
Hi KISS,

meinst Du ich soll das gesamte LookAndFeel umschalten? Im Sinne von UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel")? Das hat leider keine Auswirkungen...

Gruß,
AMiGA
 

AMiGA

Bekanntes Mitglied
@KISS könntest Du mir das mit dem Motiv Plaf bitte kurz erläutern. Ich kenne mich in Swing leider nicht gut aus, daher ist mir nur die oben genannte LookAndFeel-Einstellung bekannt.
 
R

Roar

Gast
das hat nix mit dem motif lnf zu tun. wenn du die titelleiste + rahmen haben willst musst du das über die JRootPanes deiner Frames und Dialoge machen und das LaF die titelleisten zeichnen lassen: JFrame.setDefaultLookAndFeelDecorated(true), JDialog.setDefaultLookAndFeelDecorated(true)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JavaFX JavaFX Screenshot Machen AWT, Swing, JavaFX & SWT 6
F Screenshot eines JPanel AWT, Swing, JavaFX & SWT 3
F AWT Robot Klasse Screenshot nach Pixelmustern in bestimmten Radius um Bildschirmmittelpunkt absuchen AWT, Swing, JavaFX & SWT 13
K Screenshot AWT, Swing, JavaFX & SWT 6
A AWT Beim (mehrmaligen) Screenshot machen läuft der Speicher voll AWT, Swing, JavaFX & SWT 2
0 2D-Grafik Screenshot von ScrollBar-Inhalt AWT, Swing, JavaFX & SWT 2
N screenshot machen ohne Robots? AWT, Swing, JavaFX & SWT 9
F Screenshot vom Desktop machen? AWT, Swing, JavaFX & SWT 2
C JList: Eintrag anklicken & JTextfield mit Text aus MySQL füllen? (Screenshot dabei) AWT, Swing, JavaFX & SWT 8
G GUI Screenshot AWT, Swing, JavaFX & SWT 5
T Screenshot ist verschoben. AWT, Swing, JavaFX & SWT 3
D Robot: Screenshot vom Desktop Hintergrund möglich ? AWT, Swing, JavaFX & SWT 3
H Screenshot abhängig von Grafikkarte? AWT, Swing, JavaFX & SWT 15
T Screenshot mit SWT AWT, Swing, JavaFX & SWT 5
A Screenshot eines best. Fensters AWT, Swing, JavaFX & SWT 5
R Screenshot von fremder Anwendung AWT, Swing, JavaFX & SWT 4
H Was ist das für eine Komponente ? (Screenshot) AWT, Swing, JavaFX & SWT 8
M Bildschirnkoordinaten und Screenshot? AWT, Swing, JavaFX & SWT 2
R JPanel als Screenshot in eine Datei schreiben AWT, Swing, JavaFX & SWT 3
D Zoom problem!!! (brauche screenshot...) plz help thx AWT, Swing, JavaFX & SWT 7
MiMa Optimieren einer Methode zum Zentrieren von Fenstern AWT, Swing, JavaFX & SWT 0
T VerifyListener - Ersetzen einer 0 AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
H JavaFX Timeline II: Verschieben einer ImageView AWT, Swing, JavaFX & SWT 16
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
L Swing TextPanel Schrift untereinander und auf einer Höhe AWT, Swing, JavaFX & SWT 3
mananana Mögliche probleme die in einer GUI passieren Können AWT, Swing, JavaFX & SWT 6
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
U Was genau ist das Objekt einer affinentransformation? AWT, Swing, JavaFX & SWT 1
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
mac2010 JavaFX Einbindung einer Karte AWT, Swing, JavaFX & SWT 1
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
J Ablaufsteuerung/Anleitung machen mit JDialog und einer Zustandsmaschine AWT, Swing, JavaFX & SWT 1
missy72 JavaFX Wiederholen einer IF-Abfrage beim erneuten Öffnen einer Stage AWT, Swing, JavaFX & SWT 11
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
HoT Sortieren von ein paar Zeilen in einer Tabelle, aber nicht die ganze Tabelle AWT, Swing, JavaFX & SWT 3
kodela Swing Element einer JComboBox ausgrauen AWT, Swing, JavaFX & SWT 3
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
N Einer TextArea ein ScrollPane hinzufügen AWT, Swing, JavaFX & SWT 8
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
A checkbox in einer TableView abhängig von einem anderen Celleninhalt disablen AWT, Swing, JavaFX & SWT 1
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
N Wie kann ich zwei Grafiken in einer Oberfläche anzeigen lassen? AWT, Swing, JavaFX & SWT 8
@SupressWarnings() JavaFX Auf den Controller einer ListCell zugreifen AWT, Swing, JavaFX & SWT 4
Drachenbauer Swing Wie ändere ich den Hintergrund vom Anzeigefeld einer JComboBox, die nicht zum Hineinschreiben offen steht? AWT, Swing, JavaFX & SWT 32
H 3 verschiedene Nachrichten in einer FXML View die Infos kommen aus DB AWT, Swing, JavaFX & SWT 4
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
B Text im Tetfeld in einer TableView darstellen AWT, Swing, JavaFX & SWT 20
M Inhalte einer FlowPane AWT, Swing, JavaFX & SWT 4
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
K Swing Text eines Lables in einer Methode ändern AWT, Swing, JavaFX & SWT 13
G JavaFX JavaFX-Dialog aus einer Nicht-JavaFX-Anwendung heraus AWT, Swing, JavaFX & SWT 1
1 Swing Progressbar benutzen um Fortschritt einer Methode anzuzeigen AWT, Swing, JavaFX & SWT 4
K JavaFX ViewTable mit einer LinkedList befüllen AWT, Swing, JavaFX & SWT 3
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
L Methode zum Füllen einer ComboBox AWT, Swing, JavaFX & SWT 4
J Suche nach einer horizontal aufklappbaren Toolbar AWT, Swing, JavaFX & SWT 1
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
D JavaFX Einbinden einer .fxml AWT, Swing, JavaFX & SWT 1
B Zeile einer Tabelle selektieren AWT, Swing, JavaFX & SWT 1
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Neue Themen


Oben