Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Mordrak

1x Contest-Sieger

  • »Mordrak« ist der Autor dieses Themas

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

1

08.03.2009, 00:38

JAVA .jar Dateien / Consolenfenster

Aloha,

ich suche eine einfache, schnelle und plattformunabhaengige Moeglichkeit, bei Nichtvorhandensein eines Konsolenfensters bzw. einer simplen Test-Ein/Ausgabemoeglichkeit ein neues Konsolenfenster zu generieren und fuer Ein/Ausgabe zu verwenden.

Hintergrund: Erstellt man eine .JAR Datei und ruft diese z.B. unter Windows mit nem Doppelklick auf, wird es mit javaW gestartet. Das erstellt kein Konsolenfenster - das macht nur java (ohne W). Simple Ein/Ausgaben kommen/gehen mit javaW also vom/ins Nirwhana....

Die "Loesung", eine Batchdatei fuer den Programmstart zu schreiben, klingt nicht so recht, als waere sie im Sinne des Erfinders... Ein eigenes Konsolenfenster mit Swing (AWT? - soweit bin ich leider noch nicht) zu erstellen scheint mir auch overkill zu sein. Ich hatte erwartet, dass es da eine einfache im Standardumfang vorhandene Klasse gibt, die das fuer mich erledigt. So eine art simples "if( System.console()==null && ...Eclipse ist auch nicht da...) {new Console();}" Aber ich find' einfach nix...

Frueher oder spaeter werden wir im Kurs {Bildungsgutschein laesst gruessen} zwar auch mal Fenster erstellen, aber bis dahin (und generell fuer Kleinigkeiten) haette ich das schon gern mal korrekt und bequem lauffaehig....

Gruesse,
Mordrak

PS: Nein, meinen Kursleiter zu fragen ist zwecklos. Er ist sehr nett, kennt sich aber nur im tatsaechlich geplanten Stoff aus...
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

MasterK

Frischling

Beiträge: 92

Wohnort: Koblenz

Beruf: Teamleiter Softwareentwicklung

  • Private Nachricht senden

2

08.03.2009, 00:54

Re: JAVA .jar Dateien / Consolenfenster

Zitat von »"Mordrak"«

Die "Loesung", eine Batchdatei fuer den Programmstart zu schreiben, klingt nicht so recht, als waere sie im Sinne des Erfinders...

Warum nicht?

WhiteMike

Alter Hase

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

3

08.03.2009, 09:34

Das ist ein Code, der ein Fenster erstellt. Mit einer Umstellung wird es auch kein Vollbild sein.
Vielleicht kannst du damit ein wenig rumspielen und herausfinden, ob du das nutzen kannst. Entweder irgendwelche Parameter verändern oder etwas eigenes schreiben, das wie eine Konsole funktioniert. :)



Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import java.awt.event.*;
import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.image.BufferStrategy;
import java.lang.*;
import java.util.Date;


public class Main implements Runnable, KeyListener
{
    protected Frame             frame;
    protected GraphicsDevice    graphicsdevice;

    protected Thread            animation;

    public static void main( String[] Args )
    {
        new Main();
    }

    Main()
    {
        animation = new Thread( this );
        graphicsdevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        frame = new Frame( graphicsdevice.getDefaultConfiguration() );
        frame.setUndecorated( true );
        frame.setIgnoreRepaint( true );
        frame.setResizable( false );
        frame.addKeyListener( this );
        graphicsdevice.setFullScreenWindow( frame );

        if (graphicsdevice.isDisplayChangeSupported())
        {
            try
            {
                graphicsdevice.setDisplayMode( new DisplayMode( 1280, 1024, 32, DisplayMode.REFRESH_RATE_UNKNOWN ) );
            }
            catch (Exception e)
            {
                System.out.println( "Display mode error" );
                System.exit( 0 );
            }
        }

        animation.start();
    }

    public void run()
    {
        Thread t = Thread.currentThread();
        frame.createBufferStrategy( 2 );

        while (t == animation)
        {
            BufferStrategy bufferstrategy = frame.getBufferStrategy();

            do
            {
                Graphics2D g2d = (Graphics2D) bufferstrategy.getDrawGraphics();             
                paintFrame( g2d );
                bufferstrategy.show();
                g2d.dispose();
            }
            while (bufferstrategy.contentsLost());

            try
            {
                Thread.sleep( 33 );
            }
            catch (Exception e)
            {

            }
        }
    }

    public void paintFrame( Graphics2D g )
    {

// ... Zeichnen

    }

    public void keyPressed( KeyEvent e )
    {
        if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
        {
            animation = null;
            System.out.println( "bye" );
            System.exit( 0 );
        }
    }

    public void keyReleased( KeyEvent e )
    {
    }

    public void keyTyped( KeyEvent e )
    {
    }
}

Mit freundlichen Grüßen,
WhiteMike

Mordrak

1x Contest-Sieger

  • »Mordrak« ist der Autor dieses Themas

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

4

09.03.2009, 21:15

Re: JAVA .jar Dateien / Consolenfenster

Zitat von »"MasterK"«

Zitat von »"Mordrak"«

Die "Loesung", eine Batchdatei fuer den Programmstart zu schreiben, klingt nicht so recht, als waere sie im Sinne des Erfinders...

Warum nicht?


Eine Batchdatei ist ja nicht mehr Plattform-unabhaengig...

-> WhiteMike: Uff danke - auch wenn mich das momentan noch etwas erschlaegt... Aber das heisst wohl - entweder von aussen sicherstellen, dass java statt javaw gestartet wird, oder wirklich alles komplett selbst....Seufz...

Danke & Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

MasterK

Frischling

Beiträge: 92

Wohnort: Koblenz

Beruf: Teamleiter Softwareentwicklung

  • Private Nachricht senden

5

09.03.2009, 22:01

"sicherstellen" kannst du das sowieso nicht. Wenn jemand das ding anklickt started es nunmal. Und wenns nur für debug-zwecke ist, juckt es doch keinen, dass die batch-datei nicht plattformunabhängig ist.

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

6

10.03.2009, 11:05

Also ich hab das letztens auch machen muessen, und hab einfach die library acm benutzt. Ich will damit in keinster Weise dafuer Werbung machen, so der Renner ist das nicht. Aber ne GUI Konsole ist da n Zweizeiler:

Quellcode

1
2
3
4
5
6
frame = new JFrame("Title");
console = new IOConsole();
frame.getContentPane().add(BorderLayout.CENTER, console);
frame.setVisible(true);

console.print("Hello");
"Have you tried turning it off and on again?"

Mordrak

1x Contest-Sieger

  • »Mordrak« ist der Autor dieses Themas

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

7

13.03.2009, 16:12

MasterK: seufz, da wird man erst heiss gemacht "Hurra alles plattformunabhaengig" und dann schlaegt die Realitaet doch wieder gnadenlos zu :) Aber recht hast...

Chase: So in etwa habe ich mir das vorgestellt, aber nur eben mit Bordmitteln... Auf den ACM-Seiten sind einige interessante Dinge zu lesen...

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

8

13.03.2009, 16:21

Mal quer gedacht:

Du könntest doch mit C(++) ein Programm schreiben was das ganze startet (notfalls mit system). Das binary is zwar net X-Platform aber immerhin der code... ansonsten fällt mir auch nichts ein, außer dass du noch andere Script-Dateien für die anderen Systeme mitliefern könntest...

naja...

Socke

Werbeanzeige