Swing Anwendung aus Konsole starten

Status
Nicht offen für weitere Antworten.

---

Aktives Mitglied
Hallo,

glaube das ist ne ungewöhnliche Frage, aber evtl. hat jemand ne Idee.

Ich habe eine Swing Anwendung, die mehrere Grafik Elemente darstellt.
Schlussendlich kann der user die JComponent, also das was an einzelnen Grafik Elementen angezeigt wird, als Image speichern.

Jetzt habe ich die Aufgabe bekommen das ganze als rein textbasierte Version mit Start von der Konsole heraus zu machen.
Also es soll keine für den Anwender sichtbare GUI erstellt werden, sondern nur das Image entsprechend den Parametern der user eingabe erfolgen.

Den Aufruf und das Auslesen der Kommandozeilen parameter ist ja kein Problem, aber ich kann die ganzen Methoden ohne GUI ja nicht mehr benutzen.
Kann man die GUI im HIntergrund erzeugen lassen?
Oder hat jemand einen Tip, wie kann man ohne Swing zeichen?

Code:
public void image(ActionEvent e)
    {
    	    final int w = mgr.getWidth(); 
            final int h = mgr.getHeight(); 
            BufferedImage bi = new BufferedImage(w, h, BufferedImage.TRANSLUCENT); 
            Graphics2D g2 = bi.createGraphics(); 
            Display.paint(g2);        //Display ist von JComponent              
           
            JFileChooser chooser = new JFileChooser(); 
            if (chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
            { 
            File imageFile = chooser.getSelectedFile();
           
               if(!imageFile.getName().toLowerCase().endsWith(".png"))
               { 
            	   imageFile = new File(imageFile.getAbsolutePath() + ".png"); 
               } 
              
               try
               {          
                   ImageIO.write(bi, "png", imageFile );
               }
               catch(IOException ex)
               {
                   handleException(ex);
               }
            }    
	 }

vielen Dank
 

Wildcard

Top Contributor
Zeichnen ist kein Problem, Bilder erstellen auch nicht, nur Frames darfst du im Headless Mode nicht instanzieren.
 

Ariol

Top Contributor
Du kannst deinen Frame ausserhalb des sichtbaren Bereichs anlegen lassen

Code:
	setLocation(5000, 5000);

und am Ende deines Konstruktors mit SwingUtilities.invokeLater() den Screenshot erstellen. z.B.:

Code:
SwingUtilities.invokeLater(new Runnable()
		{
			public void run()
			{
				BufferedImage bi = new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_INT_ARGB);
				paint(bi.getGraphics());
				
				try
				{
					ImageIO.write(bi, "PNG", new File("out.png"));
				}
				catch (IOException e)
				{
					// TODO Automatisch erstellter Catch-Block
					e.printStackTrace();
					System.exit(1);
				}
				
				System.exit(0);
			}
		});
 

Wildcard

Top Contributor
Ariol hat gesagt.:
Du kannst deinen Frame ausserhalb des sichtbaren Bereichs anlegen lassen
Würde ich nicht empfehlen. Die Variante schlägt zB spätestens dann fehl, wenn du keinen X-Server hast. Also lieber gleich (wie gefordert) auf echtes Headless umbauen.
 

Ariol

Top Contributor
Wildcard hat gesagt.:
Ariol hat gesagt.:
Du kannst deinen Frame ausserhalb des sichtbaren Bereichs anlegen lassen
Würde ich nicht empfehlen. Die Variante schlägt zB spätestens dann fehl, wenn du keinen X-Server hast. Also lieber gleich (wie gefordert) auf echtes Headless umbauen.
OK, wusste ich nicht und ich hab hier auch nur Linux ums zu Testen, da macht das keine Probleme ^^


Neuer Versuch (am Ende des Konstruktors...)

Code:
public class Demo extends JFrame
{

	public Demo()
	{
		//...Was auch immer

		boolean headless = true; //<- Setzen wenn headless-Mode
		
		pack();
		setVisible(!headless);
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		if(headless)
		{
			
			BufferedImage bi = new BufferedImage(Display.getWidth(), Display.getHeight(), BufferedImage.TYPE_INT_ARGB);
			Display.paint(bi.getGraphics());
	
			try
			{
				ImageIO.write(bi, "PNG", new File("out.png"));
			}
			catch (IOException e)
			{
				// TODO Automatisch erstellter Catch-Block
				e.printStackTrace();
				System.exit(1);
			}

			System.exit(0);
		}

	}

	public static void main(String[] args)
	{
		new Demo();
	}
}

Ist jetzt nur schnell zusammengebastelt, kann man sicher je nach Aufbau des Programms noch optimieren und die Variable "headless" besser benennen, aber ich will dir ja nicht den ganzen Spass nehmen :p
 

Wildcard

Top Contributor
Schon das instanzieren eines Frames schlägt headless fehl
OK, wusste ich nicht und ich hab hier auch nur Linux ums zu Testen, da macht das keine Probleme ^^
Insbesondere auf Linux lässt sich das testen, da Windows Systeme eingentlich nie Headless sind.

Wenn man was zeichnen will, einfach die Component XY instanzieren und dann mit SwingUtilities in ein Bild Zeichnen. Kein Frame, kein Dialog, kein Window.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
I Swing GUI / Webapp..... benötige ein paar Tips / Ratschläge Allgemeine Java-Themen 18
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
T Methoden Swing/Graphics/draw Allgemeine Java-Themen 6
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
N GUI Interface, swing Allgemeine Java-Themen 7
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
O Swing + EJB Allgemeine Java-Themen 4
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
K Threads - Swing - Synchronisation nötig? Allgemeine Java-Themen 8
J [SWING]Elegante Java Formular Lösung? XML? Allgemeine Java-Themen 4
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
L Web-Framework und Swing Framework o.ä Allgemeine Java-Themen 15
A Swing paintcomponent komischer Fehler Allgemeine Java-Themen 6
algorismi Google maps in Java Swing Allgemeine Java-Themen 2
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
D Organigramm mit GWT oder Swing Allgemeine Java-Themen 4
E Swing hilfe, JWindow mit eintrag in taskleiste Allgemeine Java-Themen 2
M Name der Swing Komponente Allgemeine Java-Themen 3
A awt und swing Allgemeine Java-Themen 3
MQue Swing-Componenten -> JavaBean Allgemeine Java-Themen 5
H Schrifthöhe berechnen / Swing Allgemeine Java-Themen 5
Z Swing vs Konsole Allgemeine Java-Themen 17
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
ARadauer Scaffolding für Swing Anwendungen Allgemeine Java-Themen 4
H Webseiten aus Swing Allgemeine Java-Themen 4
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Feld Validierung in Swing Programm Allgemeine Java-Themen 6
G Swing Validierungs Framework Allgemeine Java-Themen 2
A Klappmechanismus bei Components(SWING) Allgemeine Java-Themen 8
M Swing funktioniert und funktioniert nicht Allgemeine Java-Themen 4
O Swing oder JMF Problem Allgemeine Java-Themen 11
M Swing JButton Farbe zurücksetzen Allgemeine Java-Themen 6
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G java applet mit swing -> hundert prozent cpu auslastung Allgemeine Java-Themen 11
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
D Spezielles Eingabefeld für Numerische Werte in Swing Allgemeine Java-Themen 2
G Swing vs. RCP Allgemeine Java-Themen 9
T substring() und Swing setText() Allgemeine Java-Themen 6
A Hibernate und Swing Allgemeine Java-Themen 2
S SWING Problem Allgemeine Java-Themen 2
S SWING UND AWT!Problem wegen Canvas! Allgemeine Java-Themen 29
clemente Swing Applikation killt kwin Prozess (unter Linux / KDE) Allgemeine Java-Themen 3
T Exception at javax.swing.plaf.basic.BasicTableUI.paintCell Allgemeine Java-Themen 3
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
M swing und windows registry Allgemeine Java-Themen 11
A Swing hat ein leicht verändertes Aussehen, wie findet ihrs? Allgemeine Java-Themen 28
M Was soll ich benutzen? Java2D, Java3D, Swing, AWT?? Allgemeine Java-Themen 21
U Frage zu Swing Allgemeine Java-Themen 4
B Hintergrund bei Swing Allgemeine Java-Themen 6
K swing frage (komisches swing) <-- manoman was für n threa Allgemeine Java-Themen 2
J Chatprog schließen,AWT + Swing Allgemeine Java-Themen 4
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
P JavaFX Anwendung beendet sich selbst nur als Jar Allgemeine Java-Themen 40
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
J exe Anwendung CPU-/Speicherverbauch Allgemeine Java-Themen 5
alderwaran Hoher Sys-Load bei Multithreaded Anwendung Allgemeine Java-Themen 8
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
P Methoden Anwendung der allMatch()-Methode Allgemeine Java-Themen 5
D Anwendung öffnet hinter Taskleiste Allgemeine Java-Themen 7
I Anwendung auf Netzlaufwerk von mehreren Usern gleichzeitig nutzbar. Allgemeine Java-Themen 3
A Garbage Collector in NetBeans vs. exe Anwendung Allgemeine Java-Themen 33
D Java Anwendung mit dll File Allgemeine Java-Themen 5
B JAVA Prozesse in einer eigenen Anwendung laufen lassen Allgemeine Java-Themen 9
D RMI Einfache Chat-Anwendung mit RMI Allgemeine Java-Themen 0
J Jasper ireport - wieso beendet die Anwendung wenn ich die Preview schließe Allgemeine Java-Themen 1
Tort-E Datenmodell / Struktur der Anwendung Allgemeine Java-Themen 4
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
P Anwendung läuft nur mit JDK Allgemeine Java-Themen 2
D Java-Anwendung mit DB, GUI, etc. Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
F Unlimited Strength Policy. Frage Verbreitung der Anwendung Allgemeine Java-Themen 1
T Bot für Mql-Anwendung Allgemeine Java-Themen 10
F Java Anwendung Remote starten geht nicht Allgemeine Java-Themen 0
D neuen Prozess starten und anwendung beenden. Allgemeine Java-Themen 3
L Input/Output IO Anwendung Allgemeine Java-Themen 6
M Suche Framework/API für Monitoring-Anwendung Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
C Anwendung läuft nicht auf Mac OS X Allgemeine Java-Themen 2
M Java Anwendung ausführen Allgemeine Java-Themen 5
M Process wird gestoppt und nach beenden der Anwendung fortgeführt Allgemeine Java-Themen 4
J Interpreter-Fehler Anwendung startet nicht Allgemeine Java-Themen 5
W Framework für RichClient Anwendung? Allgemeine Java-Themen 4
D Mini Webserver für GUI Anwendung Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben