Grafikanwendungen zeigen keine Oberfläche an

Status
Nicht offen für weitere Antworten.

yan

Mitglied
hallo,
Ich habe gerade erst das aktuelle JDK installiert und bin Newcomer🙂
Zum Test, ob der Path richtig gesetzt und das ganze JDK richtig installiert ist, habe ich sogleich ein einfaches Beispielprogramm kompiliert und gestartet. Es hat funktioniert, ist aber ohne eine Grafikanwendung. Sogleich wollte ich noch ein Grafikanwendungsbeispiel testen, kompilierte es, und wollte es starten aber da tauchte nur ein leeres graues Fenster auf, ohne den erwarteten Inhalt. Mit einem anderen Programmbeispiel ist ebenfalls dasselbe geschehen. Hoffentlich könnt ihr mir helfen!

Angaben:
Plattform: Windows XP
Verwendetes JDK: jdk-1_5_0_06-windows-i586-p
Editor: nicht verwendet
Umgebung: Shell-Fenster


Code aus dem Buch Core Java Band1-Grundlagen(auf ein derartiger Fehler wurde im Buch und auf der Website für Bugs etc nichts vermerkt)
Die erforderlichen Grafiken für die Anwendung sind hier nicht dabei. Aber an denen wird es ja wohl kaum liegen. Die Grösse der Grafiken stimmt mit der Fenstergrösse überein, falls dies ein Fehlerfaktor sein dürfte.


Code:
/**
   @version 1.22 2004-05-21
   @author Cay Horstmann
*/

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

/**
   A program for viewing images.
*/
public class ImageViewer
{
   public static void main(String[] args)
   {
      JFrame frame = new ImageViewerFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

/**
   A frame with a label to show an image.
*/
class ImageViewerFrame extends JFrame
{
   public ImageViewerFrame()
   {
      setTitle("ImageViewer");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      // use a label to display the images
      label = new JLabel();     
      add(label);

      // set up the file chooser
      chooser = new JFileChooser();
      chooser.setCurrentDirectory(new File("."));

      // set up the menu bar
      JMenuBar menuBar = new JMenuBar();
      setJMenuBar(menuBar);

      JMenu menu = new JMenu("File");
      menuBar.add(menu);

      JMenuItem openItem = new JMenuItem("Open");
      menu.add(openItem);
      openItem.addActionListener(new 
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               // show file chooser dialog
               int result = chooser.showOpenDialog(null);

               // if file selected, set it as icon of the label
               if (result == JFileChooser.APPROVE_OPTION)
               {
                  String name = chooser.getSelectedFile().getPath();
                  label.setIcon(new ImageIcon(name));
               }
            }
         });

      JMenuItem exitItem = new JMenuItem("Exit");
      menu.add(exitItem);
      exitItem.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               System.exit(0);
            }
         });
   }

   private JLabel label;

   private JFileChooser chooser;
   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 400;
}
 
Hi und willkommen in der Welt von Java,
also meine Vermutung ist, dass das Menu, dass in dem Programm erzeugt wird, verdeckt wird.
Der Autor der Klasse hat nicht wirklich fein gearbeitet, aber ob es daran liegt, weiß ich auch nicht.
Code:
// add(label); // nicht gut
getContentPane().add(label); // besser!
Wäre mein Vorschlag. Wenn das nicht klappt, würde ich folgende Zeile im Konstruktor von ImageViewerFrame ergänzen:
Code:
JPopupMenu.setDefaultLightWeightPopupEnabled(false);

(Du musst das noch nicht verstehen, aber du kannst ruhig fragen, wenn du es wissen willst.)

EDIT: add(label) ist in 1.5 ok!
 
Ach, nichts geht nachdem ich mit deinem Code ergänzt habe hat sich nichts getan und an der Ati Grafikkarte liegt das Problem leider auch nicht. :cry:
 
Tja, tut mir leid, bei mir funktioniert es. Ich hab genau den Code, den du gepostet hast, mal in Eclipse geworfen und gestartet und bei mir kommt genau das raus, was man erwarten sollte (Fenster mit Menu mit Menuunterpunkt etc.). Aber ob es jetzt WIRKLICH an der Ausführung aus Eclipse kontra der Konsole liegen soll bezweifle ich. Ich denke, es liegt an deinem System/deiner Software.

Wie gesagt, tut mir leid.
 
Herrgott, was soll das bedeuten.. anderes Betriebssystem aber das kann doch nicht sein oder... Hat niemand dieses Problem schon gehabt?
 
Redfrettchen hat gesagt.:
Code:
// add(label); // nicht gut
getContentPane().add(label); // besser!
ich würd es eher anders rum sagen
wie du oben sehen kannst arbeitet er mit 1.5, dort kann add() direkt verwendet werden

@threadersteller
du addest das label, aber gibst nicht an wo es angezeigt werden soll
benutz mal nen layout manager, z.b. BorderLayout und positioniere das label in der mitte mit BorderLayout.CENTER
 
Sry,
alte Konventionen wird man nicht so schnell los (vor allem, wenn man nur zu Hause 1.5 hat und sonst immer gezwungen wird in 1.4.3 zu schreiben). Tut mir leid, dass ich falsches verbreitet habe.
 
Redfrettchen hat gesagt.:
Sry,
alte Konventionen wird man nicht so schnell los (vor allem, wenn man nur zu Hause 1.5 hat und sonst immer gezwungen wird in 1.4.3 zu schreiben). Tut mir leid, dass ich falsches verbreitet habe.
also schlimm ist es auch nicht das anders zu machen, nur ich find es ist unnötiger aufwand.
 
Vielen Dank für eure Post... Ich bin nochmals über alles gegangen und habe dann bemerkt dass ich ja noch die unentpackte src.zip im selben ordner wie die entpackte Datei hatte. Da dachte ich mir das dies wohl verursachte dass er den korrekten Path nicht finden kann... also hab den einen rausgenommen und jetzt funktionierts.......

Danke an euch alle die sich mit dem Problem befasst haben. Doch jetzt hat sich gezeigt das der Post doch im richtigen Unterforum war..... :roll:
Blöder Fehler 😳
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben