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

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

13.07.2010, 17:50

Java - Das erste mal

Hallo,

da ich momentan keinen Ansatz und keine Motivation mehr für große Projekte finde habe ich mal etwas in Java reingeschaut. Zum einen weil ich es eh lernen muss da wir in der Firma für die hauseigene Software fast nur Java verwenden.
Ich fand es auch gleich ziehmlich ansprechend. Meine bisherigen versuche eine GUI zu erstellen schlugen immer Fehl weil es irgendwelche Linker Fehler gab oder ich kein Build für VS10/08 erstellen konnte.

Und hier bindet man einfach die hauseigenen Libs ein und schon funktionierts :D ... naja fast :(
Das ganze ist mehr oder weniger aus einem Tutorial.

C-/C++-Quelltext

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
package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;



public class Window extends JFrame
{

    JTextField  textfield_name;
    JTextField  textfield_ausgabe;
    JButton button;




    public Window ()
    {
    this.getContentPane().setLayout(null);
    this.initWindow();
    }

    public void initWindow()
    {

        // Instanzieren:
    textfield_name = new JTextField();
    textfield_ausgabe = new JTextField();

    // Hier auch gleich die Beschriftung des Buttons mit angeben:
    button = new JButton("Start");


        button.addActionListener(new ActionListener()
        {

         public void actionPerformed(ActionEvent arg0)
         {
         // TODO Auto-generated method stub
    buttonBerechneClicked();
    }

    });



        //Position
        textfield_name.setBounds(5,10,400,25);
    textfield_ausgabe.setBounds(5,80,400,25);
        button.setBounds(300,110,100,30);

        //Dem Fenster hinzufügen

        this.getContentPane().add(textfield_name);
    this.getContentPane().add(textfield_ausgabe);
    this.getContentPane().add(button);

        this.pack ();




    }

     public void buttonBerechneClicked()
    {
        String name = textfield_name.getText();

         textfield_ausgabe.setText(name);


    }




}



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package test;

import java.awt.Window;

public class Main {

   
    public static void main(String[] args)
    {
        Window theAppWindow = new Window();
        theAppWindow.setBounds(10, 10, 420, 180);
    theAppWindow.show();

    
    }

}


Zitat

symbol : constructor Window()
location: class java.awt.Window
Window theAppWindow = new Window();
Note: D:\Projekte\Java\Anwendungen\test\src\test\Main.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error


Irgendwie will er mir keine Instanz erstellen. Den Datentyp scheint er zu erkennen denn Netbeans makiert mir alles vor dem '=' nicht rot.

Freue mich über Antworten. :)

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

13.07.2010, 18:02

Wie immer ist das erste mal aufregend, aber im nachhinein einfach nur peinlich...^^

du machst da ne ganze menge falsch. erstmal deine imports saubermachen:

es reicht, wenn du

Quellcode

1
2
3
import javax.swing.*;
import java.swing.*;
import java.text;


aufrufst.

ansonsten arbeitet bei java in der regel was gui angeht mit layoutern, und die setzt du im konstruktor null. da solltest du dir die verschiedenen anschauen, dann sparst du dir die ganzen setbounds. hier flowlayout:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
public class Window extends JFrame{
   JTextField  textfield_name;
      JTextField  textfield_ausgabe;
      JButton button;

    public Window(){
        setLayout(new FlowLayout());
        button = new JButton("Test");
        add(button);
//weiteres anpassen
    }
}


ansonsten spare dir das initWindow() in Java packt man alles in ctors und bei Fehlern wirft man exceptions.

ansonsten wenn du einen ActionListener Implementierst dann bitte in eine extra Klasse, keine anonyme .das ist doch typisch java: Klassen, Klassen, Klassen!

BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

3

13.07.2010, 18:06

Versuch doch einmal dein Fenster in Swing zu schreiben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package test;

import javax.swing.*;

public class Main {

   
       public static void main(String[] args)
       {
               JFrame window = new JFrame("Ein Java - Swing Fenster");
        window.setSize(800, 600);
        window.setDefaultCloseOperation(JFrame.CLOSE_ON_EXIT);
           window.setVisible(true);
       }

}


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package test;

import java.awt.Window;

public class Main {

   
    public static void main(String[] args)
    {
        Window theAppWindow = new Window("Hier musst du noch einen Titel für dein Fenster eintragen(glaube ich)");
        theAppWindow.setBounds(10, 10, 420, 180);
    theAppWindow.show();

    
    }

}


Ich würde für Java immer Eclipse verwenden. Ist einfacher und übersichtlicher als NetBeans oder VS ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

13.07.2010, 18:07

Show is deprecated! Statt dessen setVisible(true) verwenden!

Quellcode

1
theAppWindow.show();


Zitat


Ich würde für Java immer Eclipse verwenden. Ist einfacher und übersichtlicher als NetBeans oder VS ;)


Ich fand NetBeans eigentlich komfortabler...
@D13_Dreinig

BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

5

13.07.2010, 18:12

Bei NetBeans kommt man früher oder Später immer dazu, dieses Super GUI Editor "Matisse" zu verwenden.
Der erzeugt einen so unsauberen und vollgepackten code, dass man sich dort nicht zurecht findet.
besonders diese langen kommentare nerven! die sind einfach nur unnötig!
Außerdem kann man in Netbeans nicht einfach ein blankes Java Projekt erstellen...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

13.07.2010, 18:44

Bei NetBeans kommt man früher oder Später immer dazu, dieses Super GUI Editor "Matisse" zu verwenden.
Der erzeugt einen so unsauberen und vollgepackten code, dass man sich dort nicht zurecht findet.
besonders diese langen kommentare nerven! die sind einfach nur unnötig!
Außerdem kann man in Netbeans nicht einfach ein blankes Java Projekt erstellen...


Kann ich nicht bestätigen. Gerade den GUI-Editor find ich super. Da man in dem erzeugten Code ohnehin nicht rumpfuschen sollte ist es eigentlich egal ob dieser gut verständlich ist oder nicht. Außerdem hab ich den Code trozdem immer verstanden...

Was meinst du mit "blankem Java Projekt"? File->New->Java Application >> Next >> Finish.. ist doch ein "blankes Java Projekt"...
@D13_Dreinig

7

13.07.2010, 20:03

Hier wird mal wieder Meinung als Wahrheit verkauft...

Matisse erzeugt verdammt guten Code, besseren Code kann man eigentlich nicht einmal selbst schreiben. Wenn ich für die Arbeit GUIs bauen muss kopiere ich den GUI Code - generiert von Netbeans - in das jew. Projekt (es wird offiziell ohne GUI Designer gearbeitet) und habe IMO den saubersten GUI Code, den man sich nur wünschen kann.

Netbeans und Eclipse haben beide Stärken und Schwächen, aber IMO sind sie praktisch gleich gut und es ist fast unheimlich, dass es zwei so geniale IDEs für Lau für den kommerziellen Einsatz gibt. Ich arbeite mit beiden IDEs fast täglich und habe noch kein Feature vermisst. Mir persönlich kommt Netbeans etwas direkter und nicht so verschachtelt vor, aber das ist vor allem Gewöhnungssache.

Blanke Java Projekte sind wie schon von David erwähnt easy peasy...

Das "import saubermachen" halte ich übrigens für fragwürdig. Eigentlich ist verwenden der wildcards schlechter Stil (vor allem wird u.U. der Namespace chaotisch).

Listener in eigene Klassen zu packen ist ebenfalls streitbar. Schließlich wurden dafür in Java praktisch die anonymen Klassen eingeführt...

----
achja und jetzt zu deinem eigentlichen Problem :D
Du hast da einen import den du gar nicht benutzt --> import java.awt.Window;

wenn du den raus haust dann geht es zumindest bei mir... Welche Netbeans- und JDK-Version benutzt du eigentlich? bei mir hat nämlich der Compiler gleich gemeckert, dass java.awt.Window keinen Window() konstruktor hat. Beim nächsten Mal solltest du deine Namen besser wählen. Achja und wie schon oben erwähnt passieren genau solche Fehler noch häufiger, wenn man wildcards in den Importen benutzt...

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »Chromanoid« (13.07.2010, 21:44)


BLU3 L30PARD

Treue Seele

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

8

13.07.2010, 20:36

Naja also für Java mag ich eclipse lieber. ich schätze mal, dass ca. 70% aller Java Progger lieber mit Eclipse arbeiten, als mit NetBeans.
Eclipse hat schon viele Preise und Auszeichnungen gewonnen.

Aber ich will mich hier nicht streiten, jeder hat seine Vorlieben und Ansprüche ;)

Zu dem Generierten Code: Naja, ich lese mir schon gerne den Code durch, der da erzeugt wurde... Vor allem viele Kommentare können den Speicherverbrauch enorm anheben.
Das ist wie bei WYSIWYG Editoren für HTML etc... Die werden meist mit Kommentaren vollgepropt und verbarauchen nahher locker 3mb mehr als sonst... aber das ist für netbeans sicher übertrieben ;)

Mich würde jetzt mal interessieren, ob der Themenersteller sein Problem lösen konnte und vor allem WIE!

9

13.07.2010, 20:43

Ich habe eben die "Lösung" in meinen Beitrag reineditiert ;)

Deine Einstellung gegenüber GUI Editoren ist noch aus Zeiten von Frontpage und JBuilder - kann das sein?

Ich schreibe gleich mal ein kleines Beispiel und zeige wie schön der GUI Code ist...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

13.07.2010, 20:45

Naja also für Java mag ich eclipse lieber. ich schätze mal, dass ca. 70% aller Java Progger lieber mit Eclipse arbeiten, als mit NetBeans.
Eclipse hat schon viele Preise und Auszeichnungen gewonnen.


Woher hast du die Zahlen denn? Eine Schätzung von dir sagt egtl nichts aus...


Zu dem Generierten Code: Naja, ich lese mir schon gerne den Code durch, der da erzeugt wurde... Vor allem viele Kommentare können den Speicherverbrauch enorm anheben.
Das ist wie bei WYSIWYG Editoren für HTML etc... Die werden meist mit Kommentaren vollgepropt und verbarauchen nahher locker 3mb mehr als sonst... aber das ist für netbeans sicher übertrieben ;)


Als ob das ins Gewicht fallen würde! Meistens werden Codes ohnehin viel zu wenig kommentiert...
@D13_Dreinig

Werbeanzeige