JMenu

IwiS

Bekanntes Mitglied
Hallo alle zusammen,

in meinem Programm gibt es ein Menu. Dort habe ich u. a. die Menuitem's "Öffnen..." und "Speichern unter...". Wenn ich einen der beiden anklicke öffnet sich der entsprechende Dialog, was ja auch richtig ist. Wenn ich dann diesen Dialog abbreche, ohne etwas zu speichern, bzw. zu öffnen, bleibt das jeweilige Menuitem nach erneutem öffnen des Menüs, weiterhin ausgewählt. Ich habe bereits den Eintrage "menu.setSelected(false);", doch trotzdem zeigt es nach, abbrechen - sont schon - keine Wirkung.

Ich hoffe, ihr könnt mir weiterhelfen,
IwiS
 

IwiS

Bekanntes Mitglied
Hallo,

hier habe ich mal den Code:

Code:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.*;

public class Application extends JFrame
{
 JTextArea  textarea;
 JLabel label2;
 public static void main(String[] args)
 {
  try
  {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  }
  catch (UnsupportedLookAndFeelException e) 
  {
   e.printStackTrace();
  }
  catch (ClassNotFoundException e) 
  {
   e.printStackTrace();
  }
  catch (InstantiationException e) 
  {
   e.printStackTrace();
  }
  catch (IllegalAccessException e)  
  {
   e.printStackTrace();
  }
  Application app = new Application();
  app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
  app.setIconImage(image);
  app.setLocation(375, 150);
  app.setSize(850, 600);
  app.setTitle("Editor");
  app.setVisible(true);
 }
 public Application()
 {
  JMenuBar menubar = new JMenuBar();
  JMenu menu = new JMenu("Datei");
  menu.setSelected(false);
  JMenu menu2 = new JMenu("Bearbeiten");
  menu2.setSelected(false);
  JMenuItem menuitem = new JMenuItem("Neu");
  menuitem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    neu();
   }
  }
  );
  JMenuItem menuitem2 = new JMenuItem("Speichern unter...");
  menuitem2.setSelected(false);
  menuitem2.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    speichern();
   }
  }
  );
  JMenuItem menuitem3 = new JMenuItem("Öffnen...");
  menuitem3.setSelected(false);
  menuitem3.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    laden();
   }
  }
  );
  JMenuItem menuitem4 = new JMenuItem("Beenden");
  menuitem4.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    System.exit(0);
   }
  }
  );
  JMenuItem menuitem5 = new JMenuItem("Suchen...");
  menuitem5.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    suchen();
   }
  }
  );
  setJMenuBar(menubar);
  menubar.add(menu);
  menu.add(menuitem);
  menu.add(menuitem3);
  menu.add(menuitem2);
  menu.addSeparator();
  menu.add(menuitem4);
  menubar.add(menu2);
  menu2.add(menuitem5); 
  JToolBar toolbar = new JToolBar();
  toolbar.setSize(838, 30);
  final JComboBox combobox = new JComboBox(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()); 
  combobox.addItemListener(new ItemListener()
  {
   public void itemStateChanged(ItemEvent e)
   {
    textarea.setFont(new Font(combobox.getSelectedItem().toString(), textarea.getFont().getStyle(), textarea.getFont().getSize()));
   }
  } 
  );
  final JComboBox combobox2 = new JComboBox(new Float[] {10f, 11f, 12f, 13f, 14f, 15f, 16f, 17f, 18f, 19f, 20f});
  combobox2.addItemListener(new ItemListener()
  {
   public void itemStateChanged(ItemEvent e)
   {
    textarea.setFont(textarea.getFont().deriveFont((Float)combobox2.getSelectedItem()));
   }
  }
  );
  final JComboBox combobox3 = new JComboBox(new String[] {"Normal", "Fett", "Kursiv"});
  combobox3.addItemListener(new ItemListener()
  {
   public void itemStateChanged(ItemEvent e)
   {
    textarea.setFont(textarea.getFont().deriveFont(combobox3.getSelectedIndex()));
   }
  }
  );
  ImageIcon imageicon = new ImageIcon("speichern.png");
  JButton button3 = new JButton(imageicon);
  button3.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    speichern();
   }
  }
  );
  toolbar.add(button3);
  toolbar.addSeparator();
  toolbar.add(combobox);
  toolbar.addSeparator();
  toolbar.add(combobox2);
  toolbar.addSeparator();  
  toolbar.add(combobox3);
  add(toolbar, BorderLayout.NORTH);
  textarea = new JTextArea();
  add(textarea, BorderLayout.CENTER);
  JScrollPane scrollpane = new JScrollPane(textarea);
  add(scrollpane, BorderLayout.CENTER);
  scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
  label2 = new JLabel(" ");
  label2.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, Color.black));
  add(label2, BorderLayout.PAGE_END);
 }
 public void neu()
 {
  final JDialog dialog = new JDialog();
  dialog.setLocation(700, 325);
  dialog.setSize(275, 125);
  dialog.setTitle("Meldung");
  dialog.setVisible(true);
  JPanel panel = new JPanel();
  JLabel label = new JLabel("    Möchten Sie die aktuelle Datei speichern?");
  dialog.add(label, BorderLayout.CENTER);
  JButton button = new JButton("Speichern");
  button.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    speichern();
    dialog.dispose();
    textarea.setText("");
   }
  }
  );
  panel.add(button);
  JButton button2 = new JButton("Nicht speichern");
  button2.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent ev)
   {
    textarea.setText("");
    dialog.dispose();
   }
  }
  );
  panel.add(button2);
  dialog.add(panel, BorderLayout.PAGE_END);
 }
 public void speichern()
 {
  try
  {
  final JFileChooser chooser = new JFileChooser();
  chooser.setLocation(450, 200);
  chooser.showSaveDialog(null);
  File file = chooser.getSelectedFile();
  FileWriter fw = new FileWriter(file);
  fw.write(textarea.getText());
  fw.close();
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
  Timer timer = new Timer();
  TimerTask timertask = new TimerTask()
  {
   public void run()
   {
    timer();
   }
  };
  timer.schedule(timertask, 0);
  Timer timer2 = new Timer();
  TimerTask timertask2 = new TimerTask()
  {
   public void run()
   {
    timer2();
   }
  };
  timer2.schedule(timertask2, 3000);
 }
 public void timer()
 {
  label2.setText("Speichern war erfolgreich!");
 }
 public void timer2()
 {
  label2.setText(" ");
 }
 public void laden()
 {
  try
  {
   final JFileChooser chooser2 = new JFileChooser();
   chooser2.setLocation(450, 200);
   chooser2.showOpenDialog(null);
   File file2 = chooser2.getSelectedFile();
   FileReader fr = new FileReader(file2);
   textarea.read(fr, null);
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }
 public void suchen()
 {
  JDialog dialog3 = new JDialog();
  dialog3.setLocation(625, 325);
  dialog3.setSize(375, 225);
  dialog3.setTitle("Suchen");
  dialog3.setVisible(true);
  JPanel panel6 = new JPanel();
  panel6.setBorder(BorderFactory.createTitledBorder("Suchen"));
  dialog3.add(panel6, BorderLayout.CENTER);
  JTextField textfield = new JTextField();
  panel6.add(textfield);
  JPanel panel7 = new JPanel();
  dialog3.add(panel7, BorderLayout.PAGE_END);
 }
}

lg IwiS
 

pl4gu33

Top Contributor
Das is wahrscheinlich weil du die NullPointer Exception nicht abfängst, die geworfen wird, wenn man den Dialog abbricht bzw. dieser null zurückliefert und dadurch die Exception entsteht ;)...wenn man diese abfängt gehts ohne Probleme :)
 
Zuletzt bearbeitet:

bERt0r

Top Contributor
Übrigens, die meisten showXXXDialog Funktionen in der JavaApi liefern einen integer Wert zurück, der angibt, wie der Dialog beendet wurde. Du kannst den mit Konstanten aus der Klasse vergleichen:
Java:
JFileChooser chooser=new JFileChooser();
int returnWert=chooser.showSaveDialog();
if(returnWert==JFileChooser.APPROVE_OPTION)
{
speichereDatei(chooser.getSelectedFile());
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation JMenu, setMnemonic(Char k) bringt keine Wirkung AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
Y Backgroundcolor JMenu AWT, Swing, JavaFX & SWT 2
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
S AWT JTextFields durch Array im JMenu erzeugen? AWT, Swing, JavaFX & SWT 19
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
S Swing JMenu löscht auf panel gezeichnetes AWT, Swing, JavaFX & SWT 3
llabusch Prüfen ob JMenu leer ist & löschen AWT, Swing, JavaFX & SWT 1
3 Swing Vertikaler Separator zwischen JMenu's AWT, Swing, JavaFX & SWT 2
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
S jMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
T JMenu reagiert auf F-Taste AWT, Swing, JavaFX & SWT 6
M JMenuBar, JMenu, JMenuItem wird nicht angezeigt AWT, Swing, JavaFX & SWT 16
Jagson Mit JMenu auf jDialog zurück? Wie? AWT, Swing, JavaFX & SWT 8
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
B Swing JMenu zwischen anderen Componenten AWT, Swing, JavaFX & SWT 4
R JMenu aus Ordnern AWT, Swing, JavaFX & SWT 4
P JMenu aus Dateistruktur AWT, Swing, JavaFX & SWT 2
M Swing JMenu verdeckt durch Komponente (aber kein AWT und Swing mix!?) AWT, Swing, JavaFX & SWT 3
frankred Swing JMenu verschwindet nicht beim klicken ausserhalb des JMenu! AWT, Swing, JavaFX & SWT 4
F JMenu auf JPanel AWT, Swing, JavaFX & SWT 5
E Swing JMenu in GUI einbinden AWT, Swing, JavaFX & SWT 5
S Probleme mit JMenu und JMenuItem AWT, Swing, JavaFX & SWT 2
E JMenu übersetzen AWT, Swing, JavaFX & SWT 9
W JMenu wird vom JPanel ständig überzeichnet... Abhilfe? AWT, Swing, JavaFX & SWT 3
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
T Swing JMenu als Button behandeln AWT, Swing, JavaFX & SWT 4
T Swing jMenu AWT, Swing, JavaFX & SWT 6
R JMenu in JToolBar AWT, Swing, JavaFX & SWT 6
T Swing JMenu falsch positioniert AWT, Swing, JavaFX & SWT 2
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
Developer_X Swing JMenu Bug gefunden AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
hdi Welche Klasse + Listener für JMenu AWT, Swing, JavaFX & SWT 2
A JMenu Bug? AWT, Swing, JavaFX & SWT 12
J JMenu unterschiedliche Background einstellen AWT, Swing, JavaFX & SWT 5
C JMenu bzw. JButton mit URL versehen AWT, Swing, JavaFX & SWT 2
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
X JMenu AWT, Swing, JavaFX & SWT 2
D Abfrageproblem bei JMenu mit Icon AWT, Swing, JavaFX & SWT 2
Ernesto95 Programmabsturz beim Einbinden eines JMenu AWT, Swing, JavaFX & SWT 18
P jMenu ohne Menubar - Jigloo zeigts AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
G Scrollbares JMenu AWT, Swing, JavaFX & SWT 4
A Bei Klick auf disabled JMenuItem JMenu nicht schließen AWT, Swing, JavaFX & SWT 2
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
V JMenu und die Tabs von JTabbedFrame sind auf einmal schwarz AWT, Swing, JavaFX & SWT 3
H JMenu wird leider unterhalb! der CanvasFläche dargestellt AWT, Swing, JavaFX & SWT 5
X Swing: Bilder überlagern JMenu AWT, Swing, JavaFX & SWT 4
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
padde479 JMenu mnemonic AWT, Swing, JavaFX & SWT 3
N JMenu und JPanel AWT, Swing, JavaFX & SWT 5
P JMenu / JMenuItem durch Rekursion Icons entfernen AWT, Swing, JavaFX & SWT 4
B 1 JMenu in Mehrere JMenus AWT, Swing, JavaFX & SWT 2
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
D JMenu -> Accelerator AWT, Swing, JavaFX & SWT 2
I JMenu(Item) und FocusListener AWT, Swing, JavaFX & SWT 3
T JMenu/JMenuItem Component auf der geaddet wurde AWT, Swing, JavaFX & SWT 16
G JMenu About ohne JMenuItem AWT, Swing, JavaFX & SWT 11
R JMenu + Farbe von Hintergrund AWT, Swing, JavaFX & SWT 2
M JMenu verschwindet unter ScrollPane AWT, Swing, JavaFX & SWT 3
D Schriftfarbe ändern (JFrame, JMenu etc) AWT, Swing, JavaFX & SWT 3
K JMenu wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
I JMenu wird nicht dargestellt AWT, Swing, JavaFX & SWT 12
H JMenu soll "offen bleiben" AWT, Swing, JavaFX & SWT 3
M JMenuBar - JMenu mit Tastenkombination aufrufen / anzeigen AWT, Swing, JavaFX & SWT 8
redztripe Haken in JMenu setzen? AWT, Swing, JavaFX & SWT 8
G Icon zu JMenu AWT, Swing, JavaFX & SWT 3
M JMenu auf JComponent? AWT, Swing, JavaFX & SWT 10
G JMenu - neuer Frame AWT, Swing, JavaFX & SWT 2
X Verschwinden des JMenu unterbinden AWT, Swing, JavaFX & SWT 3
R JMenu copy Focus-Problem AWT, Swing, JavaFX & SWT 2
E JTextArea überlagert JMenu AWT, Swing, JavaFX & SWT 2
D JMenu spinnt AWT, Swing, JavaFX & SWT 7
Z JMenu und JMenuItem: MouseOver-Farbe ändern AWT, Swing, JavaFX & SWT 9
B Alle jMenu und JMenuItem in einem Array AWT, Swing, JavaFX & SWT 4
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
T JMenu erscheint nicht richtig AWT, Swing, JavaFX & SWT 6
G JMenu Info-Fenster ganz Rechts AWT, Swing, JavaFX & SWT 5
H JMenu zuklappen AWT, Swing, JavaFX & SWT 7
K JMenu Aktionen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben