Hallo allerseits,
ich will in einer grafischen Oberfläche ein "Hilfemenü" erstellen, das wie folgt funktioniert:
Man kann einen Punkt "Hilfe" anklicken.
Dann geht ein Fenster auf, in dem eine Beschreibung, also irgend ein Text steht.
Wenn man den Text gelesen hat, kann man das Fenster schließen.
(So etwas Ähnliches gibt es ja auch in der Netbeans Entwicklungsumgebung:
Man klickt "Help" an und kann dann einen Text anschauen, den man wieder schliessen kann und der dann vom Bildschirm verschwindet)
Wie kann man so was in Java machen?
Geht das mit JMenu?
Danke für den Tipp,
1)
ich hatte mir schon gedacht, dass man das mit JMenu realisieren kann.
Ich wußte nur nicht wie man das Fenster konstruiert (und schließt).
Aber das klappt jetzt auch (Programm siehe unten).
Ich habe noch ein kleines Problem.
Wenn man mit
JTextArea text=new JTextArea();
text.setText("Programmbeschreibung:"+
"In die x-Position und die y-Position müssen positive ganze Zahlen" +
"geschrieben und jeweils mit ENTER bestätigt werden." +
Text in den JFrame (Fenster) schreibt, wird der Text nicht, wenn er an das Zeilenende des
Fensters kommt, umgebrochen und bei der nächsten Zeile weitergemacht.
Gibt es eine Möglichkeit dies einfach zu realiserern?
2)
Wie kann man lange Java-Anweisung, die nicht in eine Zeile passt auf mehrere Zeilen verteilen?
Ich habe bei
text.setText("...")
den "Trick" verwendet, dass ich mit + den Text auf mehreren Zeilen verteilt habe.
Geht das auch anders?
Es könnte ja sein, dass eine Anweisung keinen Text enthält (man also kein + verwenden kann),
diese aber trotzdem sehr lang ist
mfg
Ernst
Hier das ganze Programm
Java:
package jmenu2;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.*;importjava.util.*;importjavax.swing.*;importjavax.swing.event.*;publicclassMainJMenu2{publicstaticvoidmain(String[] args){MyFenster myf =newMyFenster();
myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}classMyFensterextendsJFrame{privateContainer mycont;// Eine Zeichenfläche deklarierenprivateJPanel myp;privateGridLayout myGL12;// KonstruktorpublicMyFenster(){// Menüzeile erstellenJMenuBar menuZeile =newJMenuBar();// Ein Menü festlegenJMenu hilfeMenu =newJMenu("Hilfe");// Ein Menü in der Menüzeile anbringen
menuZeile.add( hilfeMenu );// Einen Menüeintrag erstellenJMenuItem beschreibungEintrag =newJMenuItem("Beschreibung");// Menüeintrag in das Menü anbringen
hilfeMenu.add(beschreibungEintrag);// Menüzeile im JFrame anbringensetJMenuBar(menuZeile);// Wanze erstellenMyMenuListener ml=newMyMenuListener();// Wanze an Menüeintrag anbringen
beschreibungEintrag.addActionListener(ml);// an Listener (zur Unterscheidung) weitergegeben
beschreibungEintrag.setActionCommand("1");// Einen weiteren Menüeintrag erstellenJMenuItem infoEintrag =newJMenuItem("Info");// Menüeintrag in das Menü anbringen
hilfeMenu.add(infoEintrag);// Wanze an Menüeintrag anbringen
infoEintrag.addActionListener(ml);// an Listener (zur Unterscheidung) weitergegeben
infoEintrag.setActionCommand("2");// Liefert die Stelle in MyFenster, an die montiert wird.
mycont =getContentPane();
myp =newJPanel();// Erzeugt ein Layout
myGL12 =newGridLayout(1,2);
myp.setLayout(myGL12);// Montiert die Zeichenfläche in das Fenster MyFenster
mycont.add(myp);// Fensterüberschrift festlegensetTitle("Meine Zeichnung");// Koordinaten des linken, oberen Ecks des Fensters festlegen// Koordinate x = 30, Koordinate y = 60.setLocation(30,60);// Die Breite des Fensters in x-Richtung = 600// Die Breite des Fensters in y-Richtung = 400setSize(600,400);// Macht das Fenster sichtbarsetVisible(true);}}classMyMenuListenerimplementsActionListener{publicvoidactionPerformed(ActionEvent e){if(e.getActionCommand().equals("1")){System.out.println("1.Eintrag");BeschreibungFenster bf =newBeschreibungFenster();
bf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}elseif(e.getActionCommand().equals("2")){System.out.println("2.Eintrag");}}}classBeschreibungFensterextendsJFrame{privateContainer mycont;// KonstruktorpublicBeschreibungFenster(){//Container mycont;// Eine Zeichenfläche deklarierenJTextArea text=newJTextArea();
mycont =getContentPane();//text.setText("Programmbeschreibung");
text.setText("Programmbeschreibung:\n"+"In die x-Position und die y-Position müssen positive ganze Zahlen"+"geschrieben und jeweils mit ENTER bestätigt werden."+"Werden keine Zahlen (sondern z.B. Buchstaben) angegeben oder negative"+"oder zu große Zahlen (außerhalb des Fensters) angegeben, dann wählt das "+"Programm selbst eine Position aus");
mycont.add(text);// Fensterüberschrift festlegensetTitle("Meine Zeichnung");// Koordinaten des linken, oberen Ecks des Fensters festlegen// Koordinate x = 30, Koordinate y = 60.setLocation(30,60);// Die Breite des Fensters in x-Richtung = 600// Die Breite des Fensters in y-Richtung = 400setSize(600,400);// Macht das Fenster sichtbarsetVisible(true);}}