[Java] Eclipse spinnt??

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von unix, 13. Dezember 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Dezember 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Eclipse spinnt??

    Hey, iwie öffnet eclipse bei mir keine Java Apps mehr..
    Dachte schon es liegt an meinen fehler, aber hab dann ein neues Project aufgemacht und mit nem ganz einfachem Source probiert.

    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class Timer {
     public static void main(String[] args){
     new Timer().OpenFrame();}
     JFrame mFrame;
    
     public void OpenFrame(){
    
     mFrame=new JFrame("Uhrzeit");
     mFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }
    Also ich seh hier keinen Fehler und normal müsste der wenigstens des scheiß Fenster öffnen.

    Dafür steht unten

    Timer [Java Application] und mein PFad zur java + Datum

    und gleich danach steht
    teminated Timer [Java Application] und mein PFad zur java + Datum.

    Bild
     
  2. 14. Dezember 2008
    AW: Eclipse spinnt??

    Is aber en Fehler drin, Frames muss man erst visible machen, damit sie am Leben bleiben, sofern sie die einzigste Komponente im Prozess sind, sonst terminieren sie wieder.

    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class Timer {
     public static void main(String[] args){
     new Timer().OpenFrame();}
     JFrame mFrame;
    
     public void OpenFrame(){
    
     mFrame=new JFrame("Uhrzeit");
     mFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     mFrame.setVisible(true); //<--
    }
    }
    
    Was hast du sonst für Probleme mit Eclipse?
     
  3. 15. Dezember 2008
    AW: Eclipse spinnt??

    lad dir einfach die neueste version runter und schmeiss die alte weg. im normalfall sollte das alle probleme mit eclipse lösen

    ansonsten versuch einfach mal ne HelloWorld-App zu schreiben, wenn die auch nicht funktioniert kannst du zumindest alle andren fehler ausschließen.

    aber wie der vorposter schon sagte ... bei deiner app fehlt das visible-machen!
     
  4. 15. Dezember 2008
    AW: Eclipse spinnt??

    kay, das Prob. wäre dann gelöst. Dachte die sind standardmäßig auf Visible gesetzt xD

    Und wo liegt hier der Fehler, kann iwie keine Layouts da rein bringen xD


    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class Check {
     public static void main(String[] args){
    [COLOR="Red"] new Check().OpenFrame();}[/COLOR]
     
     JTextField Tag =new JTextField("Tag",2);
     JTextField Monat =new JTextField("Monat",2);
     JTextField Jahr =new JTextField("Jahr",4);
     JTextField Stunde =new JTextField("Stunde",2);
     JTextField Minute =new JTextField("Minute",2);
     JPanel pNorth,pCenter;
     JFrame mFrame,kFrame;
     JButton start = new JButton ("start");
     JTextField Count =new JTextField("mFrame");
     JTextField Count2 = new JTextField ("kFrame");
     
     public void OpenFrame(){
     mFrame=new JFrame("mFrame");
     mFrame.setSize(800,600);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     mFrame.setVisible(true);
     mFrame.setLayout(new BorderLayout());
    [COLOR="Red"] mFrame.add(BorderLayout.NORTH, pNorth);[/COLOR]
     mFrame.add(BorderLayout.CENTER, pCenter);
     pNorth.setVisible(true);
     pCenter.setVisible(true);
     pNorth.setLayout (new FlowLayout());
     pNorth.add(Tag);
     pNorth.add(Monat);
     pNorth.add(Jahr);
     pNorth.add(Stunde);
     pNorth.add(Minute);
     pCenter.setLayout(new GridLayout(1,1));
     pCenter.add(start);
     start.setVisible(true);}}
    Im BorderLayout north sind die Textfelder im Panel pNorth und im Center Panel pCenter der Button xD
    Der Frame öffnet sich aber folgende Fehler kommen raus:

     
  5. 15. Dezember 2008
    AW: Eclipse spinnt??

    du musst pNorth und pCenter initialisieren, die sind bei dir noch NULL und liefern deswegen diese Exception!

    JPanel pNorth = new JPanel(); //kA was da der genaue constructor ist
     
  6. 15. Dezember 2008
    AW: Eclipse spinnt??

    Die Exception sagt doch eigentlich schon alles, sogar die betreffende Zeile (OpenFrame: Zeile 25):
    Nullpointer-Exception bedeutet, das ein Objekt nicht initialisiert wurde, also noch den Wert null besitzt und bei einem Objekt, das auf nichts zeigt, kann man keine Methoden aufrufen ;-)
    Deshalb musst du das Objekt natürlich vorher initialisieren, z.B. mit new.

    Hier mal das Bsp:

    Code:
    import javax.swing.*;
    import java.awt.*;
    
    public class Check {
     public static void main(String[] args){
     new Check().OpenFrame();}
     
     JTextField Tag =new JTextField("Tag",2);
     JTextField Monat =new JTextField("Monat",2);
     JTextField Jahr =new JTextField("Jahr",4);
     JTextField Stunde =new JTextField("Stunde",2);
     JTextField Minute =new JTextField("Minute",2);
     [color=blue]JPanel pNorth = new JPanel(), pCenter= new JPanel(); //<-- Hier
     JFrame mFrame,kFrame; //<--kFrame wird auch nirgends initialisiert[/color]
     JButton start = new JButton ("start");
     JTextField Count =new JTextField("mFrame");
     JTextField Count2 = new JTextField ("kFrame");
     
     public void OpenFrame(){
     mFrame=new JFrame("mFrame");
     mFrame.setSize(800,600);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     mFrame.setVisible(true);
     mFrame.setLayout(new BorderLayout());
     mFrame.add(BorderLayout.NORTH, pNorth);
     mFrame.add(BorderLayout.CENTER, pCenter);
     [color=blue]//pNorth.setVisible(true); //<--ist nur nötig bei Frames, nicht für JPanels
     //pCenter.setVisible(true); // [/color]
     pNorth.setLayout (new FlowLayout());
     pNorth.add(Tag);
     pNorth.add(Monat);
     pNorth.add(Jahr);
     pNorth.add(Stunde);
     pNorth.add(Minute);
     pCenter.setLayout(new GridLayout(1,1));
     pCenter.add(start);
     start.setVisible(true);}}
    
    Edit: Mist zu spät ;-)
     
  7. 15. Dezember 2008
    AW: Eclipse spinnt??

    okay, vorsicht jetzt kommt der ganze code ^^

    Der führt bei mir die mEthode holezeit() aus und zeigt mir auch ind er console an wie lange es noch dauert.

    Aber der kFrame mit dem Textfield Count wo die Zeit drinn stehen sollte, hängt sich iwie auf!!!

    Code:
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Check implements ActionListener {
     public static void main(String[] args){
     new Check().OpenFrame();}
    
     JTextField Tag =new JTextField("Tag",4);
     JTextField Monat =new JTextField("Monat",4);
     JTextField Jahr =new JTextField("Jahr",4);
     JTextField Stunde =new JTextField("Stunde",4);
     JTextField Minute =new JTextField("Minute",4);
     JPanel pNorth = new JPanel();
     JPanel pCenter = new JPanel();
     JFrame mFrame,kFrame;
     JButton start = new JButton ("start");
     JTextField Count =new JTextField("");
    
     
     public void finish(){
     Count.setText ("HAPPY NEW YEAR");
     Count.setForeground (Color.green);
     Count.setBackground (Color.black);
     
     try {
     Thread.sleep(600); //Methode schläft für 600 Millisekunden
     } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();}
     Count.setForeground (Color.black);
     try {
     Thread.sleep(600); //Methode schläft für 600 Millisekunden
     } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();}
     }
    
     @SuppressWarnings("deprecation")
     public void holezeit(){
     int a = Integer.parseInt(Tag.getText());
     int b = ((Integer.parseInt(Monat.getText()))-1);
     int c = ((Integer.parseInt(Jahr.getText()))-1900);
     int d = Integer.parseInt(Stunde.getText());
     int e = Integer.parseInt(Minute.getText());
     java.util.Date sylvester2009= new java.util.Date(c,b,a,d,e);//Hier werden die Einstellung für das Datum getroffen
     //java.util.Date sylvester2009= new java.util.Date(109,3,10,0,0);
     
    
     long curTime=System.currentTimeMillis();
     long diff=sylvester2009.getTime()-curTime;
     long day = diff/86400000;
     long hour = (diff % 86400000)/3600000;
     long min = (diff % 3600000)/60000;
     long sec = (diff % 60000)/1000;
     System.out.printf("Noch %d Tage, %d Stunden und %d Minuten und %d Sekunden",day,hour,min,sec); 
     String dayleft = new String (Long.toString(day));
     String hourleft = new String (Long.toString(hour));
     String minutesleft = new String (Long.toString(min));
     String secondsleft = new String (Long.toString(sec));
     if (dayleft.equals("0")){
     if (hourleft.equals("0")){
     if (minutesleft.equals("0")){
     if (secondsleft.equals("0")){
     kFrame.setLayout(new GridLayout(1,1));
    
     kFrame.setVisible(true);
    
     Count.setVisible(true);
     Count.setText ("HAPPY NEW YEAR");
     for(;true; ){
     finish(); // Endlosschleife
     }
     
     }}}}
     Count.setHorizontalAlignment(JTextField.CENTER);
     Count.setText(dayleft+ "d:" + hourleft + "h:" + minutesleft + "m:" + secondsleft+"s" ); //Uhrzeit wird in Textfeld geschrieben
    
     }
     
     public void OpenFrame(){
     mFrame=new JFrame("Settings");
     mFrame.setSize(400,150);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     mFrame.setVisible(true);
     mFrame.setLayout(new BorderLayout());
     mFrame.add(BorderLayout.NORTH, pNorth);
     mFrame.add(BorderLayout.CENTER, pCenter);
     pNorth.setVisible(true);
     pCenter.setVisible(true);
     pNorth.setLayout (new FlowLayout());
     pNorth.add(Tag);
     pNorth.add(Monat);
     pNorth.add(Jahr);
     pNorth.add(Stunde);
     pNorth.add(Minute);
     pCenter.setLayout(new FlowLayout());
     pCenter.add(start);
     start.setVisible(true);
     start.addActionListener(this);}
    
     @Override
     public void actionPerformed(ActionEvent g) {
     final String s = g.getActionCommand () ;
     if(s.equals("start")){
    
    
    kFrame = new JFrame ("Countdown");
    kFrame.setVisible(true);
    kFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    kFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
    kFrame.setLayout (new GridLayout(1,1));
    kFrame.add(Count);
    Count.setVisible(true);
    mFrame.setVisible (false);
    
     for(;true; ){
     holezeit(); // Endlosschleife
     }
     
     }}}
     
  8. 15. Dezember 2008
    AW: Eclipse spinnt??

    du musst die methode holezeit in einem neuen thread implementieren. Siehe dazu das Interface "Runnable". So wie du es jetzt machst bleibt er in der Endlosschleife hängen... ausserdem gehört da ne kleine verzögerung von mind. 50ms rein. Sonst jagste deinen Prozessor hoch

    hab mir den restlichen code zwar net angesehen, aber das is sicherlich eine Fehlerquelle
     
  9. 15. Dezember 2008
    AW: Eclipse spinnt??

    ist der ganze code ^^

    stimmt, bei holezeit() hab ich den thread vergessen.

    Aber mit klappts auch nich xD

    Code:
    import javax.swing.*;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Check [COLOR="Red"]extends Thread[/COLOR] implements ActionListener {
     public static void main(String[] args){
     new Check().OpenFrame();}
    
     JTextField Tag =new JTextField("Tag",4);
     JTextField Monat =new JTextField("Monat",4);
     JTextField Jahr =new JTextField("Jahr",4);
     JTextField Stunde =new JTextField("Stunde",4);
     JTextField Minute =new JTextField("Minute",4);
     JPanel pNorth = new JPanel();
     JPanel pCenter = new JPanel();
     JFrame mFrame,kFrame;
     JButton start = new JButton ("start");
     JTextField Count =new JTextField("");
    
     
     public void finish(){
     Count.setText ("HAPPY NEW YEAR");
     Count.setForeground (Color.green);
     Count.setBackground (Color.black);
     
     try {
     Thread.sleep(600); //Methode schläft für 600 Millisekunden
     } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();}
     Count.setForeground (Color.black);
     try {
     Thread.sleep(600); //Methode schläft für 600 Millisekunden
     } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();}
     }
    
     @SuppressWarnings("deprecation")
     public void holezeit(){
     int a = Integer.parseInt(Tag.getText());
     int b = ((Integer.parseInt(Monat.getText()))-1);
     int c = ((Integer.parseInt(Jahr.getText()))-1900);
     int d = Integer.parseInt(Stunde.getText());
     int e = Integer.parseInt(Minute.getText());
     java.util.Date sylvester2009= new java.util.Date(c,b,a,d,e);//Hier werden die Einstellung für das Datum getroffen
     long curTime=System.currentTimeMillis();
     long diff=sylvester2009.getTime()-curTime;
     long day = diff/86400000;
     long hour = (diff % 86400000)/3600000;
     long min = (diff % 3600000)/60000;
     long sec = (diff % 60000)/1000;
     System.out.printf("Noch %d Tage, %d Stunden und %d Minuten und %d Sekunden",day,hour,min,sec); 
     String dayleft = new String (Long.toString(day));
     String hourleft = new String (Long.toString(hour));
     String minutesleft = new String (Long.toString(min));
     String secondsleft = new String (Long.toString(sec));
     if (dayleft.equals("0")){
     if (hourleft.equals("0")){
     if (minutesleft.equals("0")){
     if (secondsleft.equals("0")){
     kFrame.setLayout(new GridLayout(1,1));
    
     kFrame.setVisible(true);
    
     Count.setVisible(true);
     Count.setText ("HAPPY NEW YEAR");
     for(;true; ){
     finish(); // Endlosschleife
     }
     
     }}}}
     Count.setHorizontalAlignment(JTextField.CENTER);
     Count.setText(dayleft+ "d:" + hourleft + "h:" + minutesleft + "m:" + secondsleft+"s" ); //Uhrzeit wird in Textfeld geschrieben
    [COLOR="Red"] try {
     Thread.sleep(1000); //Methode schläft für 600 Millisekunden
     } catch (InterruptedException n) {
     // TODO Auto-generated catch block
     n.printStackTrace();}[/COLOR]
     }
     
     public void OpenFrame(){
     mFrame=new JFrame("Settings");
     mFrame.setSize(400,150);
     mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     mFrame.setVisible(true);
     mFrame.setLayout(new BorderLayout());
     mFrame.add(BorderLayout.NORTH, pNorth);
     mFrame.add(BorderLayout.CENTER, pCenter);
     pNorth.setVisible(true);
     pCenter.setVisible(true);
     pNorth.setLayout (new FlowLayout());
     pNorth.add(Tag);
     pNorth.add(Monat);
     pNorth.add(Jahr);
     pNorth.add(Stunde);
     pNorth.add(Minute);
     pCenter.setLayout(new FlowLayout());
     pCenter.add(start);
     start.setVisible(true);
     start.addActionListener(this);}
    
     @Override
     public void actionPerformed(ActionEvent g) {
     final String s = g.getActionCommand () ;
     if(s.equals("start")){
    
    
    kFrame = new JFrame ("Countdown");
    kFrame.setVisible(true);
    kFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    kFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
    kFrame.setLayout (new GridLayout(1,1));
    kFrame.add(Count);
    Count.setVisible(true);
    mFrame.setVisible (false);
    
     for(;true; ){
     holezeit(); // Endlosschleife
     }
     
     }}}
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.