Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class MainJMenu2 {
public static void main(String[] args) {
MyFenster myf = new MyFenster();
myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyFenster extends JFrame{
private Container mycont;
// Eine Zeichenfläche deklarieren
private JPanel myp;
private GridLayout myGL12;
// Konstruktor
public MyFenster(){
// Menüzeile erstellen
JMenuBar menuZeile = new JMenuBar();
// Ein Menü festlegen
JMenu hilfeMenu = new JMenu( "Hilfe" );
// Ein Menü in der Menüzeile anbringen
menuZeile.add( hilfeMenu );
// Einen Menüeintrag erstellen
JMenuItem beschreibungEintrag = new JMenuItem("Beschreibung");
// Menüeintrag in das Menü anbringen
hilfeMenu.add(beschreibungEintrag);
// Menüzeile im JFrame anbringen
setJMenuBar(menuZeile);
// Wanze erstellen
MyMenuListener ml= new MyMenuListener();
// Wanze an Menüeintrag anbringen
beschreibungEintrag.addActionListener(ml);
// an Listener (zur Unterscheidung) weitergegeben
beschreibungEintrag.setActionCommand("1");
// Einen weiteren Menüeintrag erstellen
JMenuItem infoEintrag = new JMenuItem("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 = new JPanel();
// Erzeugt ein Layout
myGL12 = new GridLayout(1,2);
myp.setLayout(myGL12);
// Montiert die Zeichenfläche in das Fenster MyFenster
mycont.add(myp);
// Fensterüberschrift festlegen
setTitle("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 = 400
setSize(600,400);
// Macht das Fenster sichtbar
setVisible(true);
}
}
class MyMenuListener implements ActionListener {
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("1")) {
System.out.println("1.Eintrag");
BeschreibungFenster bf = new BeschreibungFenster();
bf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
else if (e.getActionCommand().equals("2")) {
System.out.println("2.Eintrag");
}
}
}
class BeschreibungFenster extends JFrame{
private Container mycont;
// Konstruktor
public BeschreibungFenster(){
//Container mycont;
// Eine Zeichenfläche deklarieren
JTextArea text=new JTextArea();
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 festlegen
setTitle("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 = 400
setSize(600,400);
// Macht das Fenster sichtbar
setVisible(true);
}
}