Frage

Ich versuche, meine erste GUI-Anwendung (Java + Eclipse-+ Swing) zu erstellen. Dies ist mein Code:

import java.awt.*;
import javax.swing.*;


public class HelloWorldSwing extends JFrame {

        JTextArea m_resultArea = new JTextArea(6, 30);

        //====================================================== constructor
        public HelloWorldSwing() {
            //... Set initial text, scrolling, and border.
            m_resultArea.setText("Enter more text to see scrollbars");
            JScrollPane scrollingArea = new JScrollPane(m_resultArea);
            scrollingArea.setBorder(BorderFactory.createEmptyBorder(10,5,10,5));

            // Get the content pane, set layout, add to center
            Container content = this.getContentPane();
            content.setLayout(new BorderLayout());
            content.add(scrollingArea, BorderLayout.CENTER);
            this.pack();
        }

        //============================================================= main
        public static void main(String[] args) {
            JFrame win = new HelloWorldSwing();
            win.setTitle("TextAreaDemo");
            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            win.setVisible(true);
        }


}

Der Code wurde genommen von hier .

Wenn ich die Anwendung von Eclipse-laufen die erwarteten Fenster erscheint (Also, es ist gut. Ich sehe, was ich sehen will). Allerdings, wenn ich versuche, das Fenster zu schließen oder versuchen, etwas in dem Textfeld des Programm friert zu schreiben. Das Betriebssystem schreibt mir, dass Programm reagiert nicht (ich versuche, es auf Ubuntu).

Kann mir jemand helfen, den Grund des Problems zu finden?

Vielen Dank im Voraus für jede Hilfe.

War es hilfreich?

Lösung

Ich bin sicher, dass dies nicht mit dem Code zu tun hat, wie andere den Code ausgeführt wird gefunden haben, ganz gut auf ihren Maschinen - was auf eine maschinenspezifische Frage. Aus Eclipse, stellen Sie sicher, dass es Setup ist die erwartete JDK / JRE zu verwenden. Doch bevor sich Gedanken darüber, wie Eclipse-Ihre Situation ist der Umgang, ich Dinge von Hand zuerst laufen würde -. Zumal man eine sehr einfache Klasse haben

Ich würde überprüfen, um sicherzustellen, dass Sie den erwarteten Compiler und Runtime verwenden. Unter Linux:

which javac
which java

Wenn sie sind beide, was Sie erwarten, gehen Sie wie folgt:

javac HelloWorldSwing.java
java HelloWorldSwing 

Wenn Sie ein ähnliches Problem bekommen, dann wissen Sie, es ist nicht die Eclipse-Konfiguration und etwas ist es anders. Wenn Sie nicht die neueste JDK verwenden, ein Upgrade auf die neueste. Wenn Sie bereits auf dem neuesten sind, dann könnte es ein Display-Treiber sein. Haben andere Java-Swing-Programme arbeiten auf diesem Computer? Ich bin sicher, dass Sie einige im Netz finden können, laden Sie eine App bereits als Glas verpackt und versuchen Sie es ausgeführt wird.

Andere Tipps

haben Sie versucht, die eventdispatcherthread mit dem JFrame sehen?

so etwas wie:

public static void main(String[] args){
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            createAndViewJFrame();
        }
    });
}

public void createAndViewJFrame(){
    JFrame win = new HelloWorldSwing();
    win.setTitle("TextAreaDemo");
    win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    win.setVisible(true);
}

dann würde der Rahmen durch den Schwenk Dispatcher-Thread angezeigt.

hoffen, es hilft, obwohl im nur raten ...

Update: als commen wies man i f ** ed up der invokeLater () -Aufruf. Ich bearbeiten gerade diesen Beitrag, das zu korrigieren. Thanx gehen zu Yishai & willcodejavaforfood für den Hinweis it out!

frank

  

Sie müssen das Exit-Ereignis fangen und   reagiert mit einem System.exit( 0 );

     

Es soll möglich sein, das finden in   die meisten Swing-Beispiele online.

falsche Sachen ... sorry ... Kaffee ... argh ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top