Klassen Methode aus anderer Klasse

Lucaaa

Bekanntes Mitglied
Hallo!
Ich habe ein Programm mit bisher 2 Klassen. eine für die GUI und eine wo das Menü drin programmiert wird. Mittels ActionListener wird wenn ich auf das erste Item im Menü klicke eine Methode aus der Menu.class aufgerufen
Java:
Menu menu = new Menu();
menu.menu1Item1();

in diesem Fall ist der Menüeintrag dafür da eine Datei einzulesen. Das funktioniert auch, allerdings öffnet sich das Programmfenster so noch einmal. Wenn ich aber das Menu menu = new Menu z.B. ganz oben am anfang der Klasse mache startet das Programm einfach gar nicht. Die Konsole bleibt auch leer.
Hoffe ihr könnt mir helfen.
 

Lucaaa

Bekanntes Mitglied
Java:
package de.java.luca.textverschluesselung;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonActionListener implements ActionListener{
 
 
 
 @Override
 public void actionPerformed(ActionEvent e) {
  Main main = new Main();
  main.menu1Item1();
 
 }
}
Ich meine das das
Java:
 Main main = new Main();
jetzt in der ActionPermormed Methode steht. So wird aber das Fenster beim klick auf den Button nochmal geöffnet. Also ich hab dann 2 Hauptfenster. Wenn ich aber das Main main = new Main(); nach oben genau unter
public class setze, wird da Programm garnicht erst gestartet.
 

Joose

Top Contributor
Ich nehme an deine Klasse "Main" (sehr ungünstiger Name!) erstellt deine GUI.
Natürlich wird dann auch ein neues Fenster erzeugt wenn du im Listener ein neues Objekt dieser Klasse erstellst!
Du musst deinem Listener Objekt im Konstruktor eine Referenz auf dein Main Objekt mitgeben.
Dann kannst du von dieser Referenz die ganzen Methoden aufrufen.

Java:
public ButtonActionListener(Main main) {
    this.main = main;
}

Das verschieben von Main main = new Main(); hat nichts gebracht weil dadurch beim instanzieren vom Listener eine Endlosschleife entsteht. Main wird instanziert, welches ein neues Listener Objekt instanziert, diese instanziert wieder eine Main Objekt, .......
 

Lucaaa

Bekanntes Mitglied
So werden ewig viele Fehler angezeigt...
Java:
package de.java.luca.textverschluesselung;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonActionListener implements ActionListener{
 public public ButtonActionListener(Main main) {
  this.main = main;
 }
 
 @Override
 public void actionPerformed(ActionEvent e) {
  MainGui gui = new MainGui();
  gui.menu1Item1();
  
  
 }
}
 

Joose

Top Contributor
Mein Code sollte dir nur grob zeigen was ich meinte ;) den Code einfach in deinen hineinkopieren wird nicht funktionieren (und ist auch Absicht ;))
Du musst natürlich deinem Listener ein entsprechendes Attribut geben, diesem Attribut im Konstruktor den Wert zuweisen und in der actionPerformed Methode musst du dann auf diese Attribut zugreifen und die gewünschte Methode aufrufen.
 

Harry Kane

Top Contributor
Wenn du etwas mehr Kontext zeigen könntest (also welche Klasse denn genau für was verantwortlich ist), könnten wir vermutlich bessere Lösungen vorschlagen.
Mein Eindruck ist, dass in der Main ein JButton angelegt wird, der eine Instanz von ButtonActionListener verpasst bekommt, und dass in der actionPerformed von ButtonActionListener wieder eine Methode aus Main aufgerufen werden soll. Für mich wäre das ein Beispiel für "Trennen, was eigentlich zusammengehört".
Man sollte natürlich seinen Code aufteilen und nicht alles in eine Klasse klatschen, aber das heisst nicht, dass man den Aufruf einer Methode von Klasse A in eine Klasse B auslagern sollte, und dann B eine Referenz auf A gibt.
 

Lucaaa

Bekanntes Mitglied
okay hier der Code
Klasse mit main Methode:
Java:
package de.java.luca.textverschluesselung;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.channels.FileChannel.MapMode;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
import javax.swing.border.LineBorder;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import javax.swing.plaf.FileChooserUI;
public class MainGui extends JFrame {
 private static final long serialVersionUID = 1L;
 
// Komponenten
 // Menükomponenten:
 private JMenuBar menubar1;
 
 private JMenu menubar1_menu1;
 private JMenu menubar1_menu2;
 private JMenu menubar1_menu3;
 
 private JMenuItem menubar1_menu1_menuitem1;
 private JMenuItem menubar1_menu1_menuitem2;
 private JMenuItem menubar1_menu1_menuitem3;
 
 private JMenuItem menubar1_menu2_menuitem1;
 private JMenuItem menubar1_menu2_menuitem2;
 private JMenuItem menubar1_menu2_menuitem3;
 private JMenuItem menubar1_menu3_menuitem1;
 private JMenuItem menubar1_menu3_menuitem2;
 private JMenuItem menubar1_menu3_menuitem3;
 
 //TextArea
 public JTextArea textArea_eingabe;
 public JTextArea textArea_ausgabe;
 
 // Buttons
 private JButton button_verschlüsseln;
 private JButton button_entschlüsseln;
 private JButton button_zurücksetzen;
 private JButton button_drucken;
 private JButton button_ausDatei;
 private JButton button_ausZwischenablage;
 private JButton button_kopieren;
 private JButton button_speichern;
 
 //Labels
 private JLabel label_methode;
 private JLabel label_verschiebung_container1; 
 private JLabel label_verschiebung1_container1;
 private JLabel label_verschiebung_container2; 
 private JLabel label_verschiebung1_container2;
 private JLabel label_verschiebung_container3; 
 private JLabel label_verschiebung1_container3;
 private JLabel label_verschiebung_container4; 
 private JLabel label_verschiebung1_container4;
 private JLabel label_einfügenAus;
 private JLabel label_fortschritt;
 private JLabel label_linie;
 
 // ComboBoxen
  private JComboBox<String> combobox_dropdown;
  private JComboBox<?> combobox_verschiebung_container1;
  private JComboBox<?> combobox_verschiebung_container2;
  private JComboBox<?> combobox_verschiebung_container3;
  private JComboBox<?> combobox_verschiebung_container4;
  
  // Panels
  private JPanel MasterContainer;
   private JPanel MasterContainer_container1;
   private JPanel MasterContainer_container2;
   private JPanel MasterContainer_container3;
   private JPanel MasterContainer_container4;
 // ProgressBars
  private JProgressBar progressBar_fortschritt;
  
 MainGui() {
  setTitle("Textverschlüsselung");
  setSize(700, 600);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setResizable(false);
  
  this.initKomponenten();
  this.initListeners();
  setVisible(true);
 }
 
 
 public void initKomponenten() {
  this.getContentPane().setLayout(null);
  
  //Schriftart
    Font schrift = new Font("Arial", Font.PLAIN, 22);
    
  
  // Menükomponenten
  this.menubar1 = new JMenuBar();
  
  this.menubar1_menu1 = new JMenu("Datei");
  this.menubar1_menu2 = new JMenu("Optionen");
  this.menubar1_menu3 = new JMenu("Hilfe");
  
  this.menubar1_menu1_menuitem1 = new JMenuItem("Datei öffnen");
  this.menubar1_menu1_menuitem1.setFont(schrift);
  this.menubar1_menu1_menuitem2 = new JMenuItem("Datei speichern");
  this.menubar1_menu1_menuitem2.setFont(schrift);
  this.menubar1_menu1_menuitem3 = new JMenuItem("Beenden");
  this.menubar1_menu1_menuitem3.setFont(schrift);
  
  this.menubar1_menu2_menuitem1 = new JMenuItem("Schriftfarbe");
  this.menubar1_menu2_menuitem1.setFont(schrift);
  this.menubar1_menu2_menuitem2 = new JMenuItem("Hintergrundfarbe");
  this.menubar1_menu2_menuitem2.setFont(schrift);
  this.menubar1_menu2_menuitem3 = new JMenuItem("");
  this.menubar1_menu2_menuitem3.setFont(schrift);
  
  this.menubar1_menu3_menuitem1 = new JMenuItem("Hilfe");
  this.menubar1_menu3_menuitem1.setFont(schrift);
  this.menubar1_menu3_menuitem2 = new JMenuItem("Kontakt");
  this.menubar1_menu3_menuitem2.setFont(schrift);
  this.menubar1_menu3_menuitem3 = new JMenuItem("Über");
  this.menubar1_menu3_menuitem3.setFont(schrift);
  
  this.menubar1.add(this.menubar1_menu1);
  this.menubar1.add(this.menubar1_menu2);
  this.menubar1.add(this.menubar1_menu3);
  
  this.menubar1_menu1.add(this.menubar1_menu1_menuitem1);
  this.menubar1_menu1.add(this.menubar1_menu1_menuitem2);
  this.menubar1_menu1.add(this.menubar1_menu1_menuitem3);
  this.menubar1_menu1.setFont(schrift);
  
 // this.menubar1_menu2.add(this.menubar1_menu2_menuitem1);
  this.menubar1_menu2.add(this.menubar1_menu2_menuitem2);
 // this.menubar1_menu2.add(this.menubar1_menu2_menuitem3);
  this.menubar1_menu2.setFont(schrift);
  
  this.menubar1_menu3.add(this.menubar1_menu3_menuitem1);
  this.menubar1_menu3.add(this.menubar1_menu3_menuitem2);
  this.menubar1_menu3.add(this.menubar1_menu3_menuitem3);
  this.menubar1_menu3.setFont(schrift);
  
  this.setJMenuBar(this.menubar1);
 
  //TextArea
  this.textArea_eingabe = new JTextArea("Hier text eingeben");
  this.textArea_eingabe.setBorder(new LineBorder(Color.BLACK));
  this.textArea_eingabe.setBounds(8, 8, 480, 150);
  this.getContentPane().add(this.textArea_eingabe, BorderLayout.CENTER);
  
  this.textArea_ausgabe = new JTextArea();
  this.textArea_ausgabe.setBorder(new LineBorder(Color.BLACK));
  this.textArea_ausgabe.setBounds(8, 410, 678, 120);
  this.textArea_ausgabe.setEditable(false);
  this.getContentPane().add(this.textArea_ausgabe);
  
  
  // Panels
   this.MasterContainer = new JPanel(new CardLayout());
   this.MasterContainer.setBounds(8, 255, 482,  90);
   this.MasterContainer.setBackground(Color.BLUE);
    this.getContentPane().add(this.MasterContainer);
   
   this.MasterContainer_container1 = new JPanel();
   this.MasterContainer_container1.setLayout(null);
   this.MasterContainer.add(this.MasterContainer_container1, " Cäsar - ASCI Zeichensatz");
    
   this.MasterContainer_container2 = new JPanel();
   this.MasterContainer_container2.setLayout(null);
   this.MasterContainer.add(this.MasterContainer_container2, " Cäsar - Groß- und Kleinbuchstaben");
   
   this.MasterContainer_container3 = new JPanel();
   this.MasterContainer_container3.setLayout(null);
   this.MasterContainer.add(this.MasterContainer_container3, " Cäsar - nur Kleinbuchstaben");
   
   this.MasterContainer_container4 = new JPanel();
   this.MasterContainer_container4.setLayout(null);
   this.MasterContainer.add(this.MasterContainer_container4, " Cäsar - nur Großbuchstaben");
   
   
  // Buttons
  this.button_verschlüsseln = new JButton("Verschlüsseln");
  this.button_verschlüsseln.setBorder(new LineBorder(Color.BLACK));
  this.button_verschlüsseln.setBounds(510, 15, 160, 35);
  this.button_verschlüsseln.setFont(schrift);
  this.getContentPane().add(this.button_verschlüsseln);
  
  this.button_entschlüsseln = new JButton("Entschlüsseln");
  this.button_entschlüsseln.setBorder(new LineBorder(Color.BLACK));
  this.button_entschlüsseln.setBounds(510, 65, 160, 35);
  this.button_entschlüsseln.setFont(schrift);
  this.getContentPane().add(this.button_entschlüsseln);
  
  this.button_zurücksetzen = new JButton("Zurücksetzen");
  this.button_zurücksetzen.setBorder(new LineBorder(Color.BLACK));
  this.button_zurücksetzen.setBounds(510, 115, 160, 35);
  this.button_zurücksetzen.setFont(schrift);
  this.button_zurücksetzen.setBackground(Color.GREEN);
  this.getContentPane().add(this.button_zurücksetzen);
  
  this.button_drucken = new JButton("Drucken");
  this.button_drucken.setBorder(new LineBorder(Color.BLACK));
  this.button_drucken.setBounds(510, 165, 160, 35);
  this.button_drucken.setFont(schrift);
  this.getContentPane().add(this.button_drucken);
  this.button_ausZwischenablage = new JButton("Zwischenablage");
  this.button_ausZwischenablage.setBorder(new LineBorder(Color.BLACK));
  this.button_ausZwischenablage.setBounds(200, 165, 170, 35);
  this.button_ausZwischenablage.setFont(schrift);
  this.button_ausZwischenablage.setBackground(Color.GREEN);
  this.getContentPane().add(this.button_ausZwischenablage);
  
  
  this.button_ausDatei = new JButton("Datei");
  this.button_ausDatei.setBorder(new LineBorder(Color.BLACK));
  this.button_ausDatei.setBounds(388, 165, 100, 35);
  this.button_ausDatei.setFont(schrift);
  this.button_ausDatei.setBackground(Color.GREEN);
  this.getContentPane().add(this.button_ausDatei);
  
  this.button_speichern = new JButton("Speichern");
  this.button_speichern.setBorder(new LineBorder(Color.BLACK));
  this.button_speichern.setBounds(510, 370, 160, 35);
  this.button_speichern.setFont(schrift);
  this.button_speichern.setBackground(Color.GREEN);
  this.getContentPane().add(this.button_speichern);
  
  this.button_kopieren = new JButton("Kopieren");
  this.button_kopieren.setBorder(new LineBorder(Color.BLACK));
  this.button_kopieren.setBounds(510, 320, 160, 35);
  this.button_kopieren.setFont(schrift);
  this.button_kopieren.setBackground(Color.GREEN);
  this.getContentPane().add(this.button_kopieren);
  
  
  
  
  
 // Labels 
  this.label_methode = new JLabel("Verschlüsselungsmethode:");
  this.label_methode.setBounds(15, 220, 270, 25);
  this.label_methode.setFont(schrift);
  this.getContentPane().add(this.label_methode);
 
  this.label_verschiebung_container1 = new JLabel("Verschieben um:");
  this.label_verschiebung_container1.setBounds(5, 0, 200, 25);
  this.label_verschiebung_container1.setFont(schrift);
  this.MasterContainer_container1.add(this.label_verschiebung_container1);
    
  this.label_verschiebung1_container1 = new JLabel("Zeichen");
  this.label_verschiebung1_container1.setBounds(235, 0, 100, 25);
  this.label_verschiebung1_container1.setFont(schrift);
  this.MasterContainer_container1.add(this.label_verschiebung1_container1);
  
  this.label_verschiebung_container2 = new JLabel("Verschieben um:");
  this.label_verschiebung_container2.setBounds(5, 0, 200, 25);
  this.label_verschiebung_container2.setFont(schrift);
  this.MasterContainer_container2.add(this.label_verschiebung_container2);
    
  this.label_verschiebung1_container2 = new JLabel("Zeichen");
  this.label_verschiebung1_container2.setBounds(235, 0, 100, 25);
  this.label_verschiebung1_container2.setFont(schrift);
  this.MasterContainer_container2.add(this.label_verschiebung1_container2);
  
  this.label_verschiebung_container3 = new JLabel("Verschieben um:");
  this.label_verschiebung_container3.setBounds(5, 0, 200, 25);
  this.label_verschiebung_container3.setFont(schrift);
  this.MasterContainer_container3.add(this.label_verschiebung_container3);
    
  this.label_verschiebung1_container3 = new JLabel("Zeichen");
  this.label_verschiebung1_container3.setBounds(235, 0, 100, 25);
  this.label_verschiebung1_container3.setFont(schrift);
  this.MasterContainer_container3.add(this.label_verschiebung1_container3);
  
  this.label_verschiebung_container4 = new JLabel("Verschieben um:");
  this.label_verschiebung_container4.setBounds(5, 0, 200, 25);
  this.label_verschiebung_container4.setFont(schrift);
  this.MasterContainer_container4.add(this.label_verschiebung_container4);
    
  this.label_verschiebung1_container4 = new JLabel("Zeichen");
  this.label_verschiebung1_container4.setBounds(235, 0, 100, 25);
  this.label_verschiebung1_container4.setFont(schrift);
  this.MasterContainer_container4.add(this.label_verschiebung1_container4);
  
  this.label_einfügenAus = new JLabel("Text einfügen aus:");
  this.label_einfügenAus.setBounds(8, 165, 180, 35);
  this.label_einfügenAus.setFont(schrift);
  this.getContentPane().add(this.label_einfügenAus);
  
  this.label_fortschritt = new JLabel("Fortschritt:");
  this.label_fortschritt.setBounds(8, 353, 110, 15);
  this.getContentPane().add(this.label_fortschritt);
  
  this.label_linie = new JLabel("Test");
  this.label_linie.setBounds(80, 361, 420, 1);
  this.label_linie.setBorder(new LineBorder(Color.black));
  this.getContentPane().add(this.label_linie);
  
  
  
  
  // Comboboxen
  this.combobox_dropdown = new JComboBox<>(new String[] {" Cäsar - ASCI Zeichensatz", " Cäsar - Groß- und Kleinbuchstaben", " Cäsar - nur Kleinbuchstaben", " Cäsar - nur Großbuchstaben"});
  this.combobox_dropdown.setEditable(false);
  this.combobox_dropdown.setBounds(285, 220, 205, 25);
  this.getContentPane().add(this.combobox_dropdown);
  this.combobox_verschiebung_container1 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127});
  this.combobox_verschiebung_container1.setBounds(173, 0, 50, 25);
  this.MasterContainer_container1.add(this.combobox_verschiebung_container1);
 
  this.combobox_verschiebung_container2 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52});
  this.combobox_verschiebung_container2.setBounds(173, 0, 50, 25);
  this.MasterContainer_container2.add(this.combobox_verschiebung_container2);
  
  this.combobox_verschiebung_container3 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26});
  this.combobox_verschiebung_container3.setBounds(173, 0, 50, 25);
  this.MasterContainer_container3.add(this.combobox_verschiebung_container3);
  
  this.combobox_verschiebung_container4 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26});
  this.combobox_verschiebung_container4.setBounds(173, 0, 50, 35);
  this.MasterContainer_container4.add(this.combobox_verschiebung_container4);
 
  
  // Progressbars
  this.progressBar_fortschritt = new JProgressBar();
  this.progressBar_fortschritt.setBounds(8, 370, 490, 35);
  this.getContentPane().add(this.progressBar_fortschritt);
 }
 
 
 public void initListeners() {
   
  this.combobox_dropdown.addItemListener(new ItemListener() {
   
    @Override
    public void itemStateChanged(ItemEvent e) {
    CardLayout cl = (CardLayout) MasterContainer.getLayout();
    cl.show(MasterContainer, e.getItem().toString());
   }
   });
  
  button_verschlüsseln.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    textArea_ausgabe.setText(textArea_eingabe.getText());
   }
  });
  
  menubar1_menu1_menuitem1.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    menu1Item1();
   }
  });
  
  
  menubar1_menu1_menuitem2.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
   try {
    menu1Item2();
   } catch (FileNotFoundException e1) {
    e1.printStackTrace();
   } 
   }
  });
  
  menubar1_menu1_menuitem3.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    menu1Item3();
   }
  });
  
  
  menubar1_menu2_menuitem2.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    menu2Item2();
   }
  });
  
  menubar1_menu3_menuitem3.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    DialogInfo dialog = new DialogInfo();
    dialog.setLocationRelativeTo(getLayeredPane());
    dialog.setVisible(true);
   }
  });
  
     
  
   this.button_ausDatei.addActionListener(new ActionListener() {
    
    @Override
    public void actionPerformed(ActionEvent e) {
     menu1Item1();  
    }
   });
   
  
  this.button_speichern.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    try {
     menu1Item2();
    } catch (FileNotFoundException e1) {
     e1.printStackTrace();
    }  
   }
  });
  
  
  this.button_zurücksetzen.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    buttonZurücksetzen(); 
   }
  });
  
  this.button_ausZwischenablage.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    buttonAusZwischenablage(); 
   }
  });
  
  button_kopieren.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    buttonKopieren();  
   }
  });
  
  
  this.button_drucken.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    buttonDrucken(); 
   }
  });
  
  
  
  
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 // Methoden für das Menü
 
 
 
 
  public void menu1Item1() {
   JFileChooser fc = new JFileChooser();
   fc.showOpenDialog(null);
   File filechoosed = fc.getSelectedFile();
   File file = new File(filechoosed.toString());
   Scanner sc = null;
   
   if(file.exists()) {
    try {
    sc = new Scanner(file);
    while(sc.hasNext()) {
     String text = sc.nextLine().toString();
     String tmp = textArea_eingabe.getText();
     textArea_eingabe.setText(tmp + "\n" + text);
    }
     
    } catch (FileNotFoundException e) {
      }
   }
    sc.close();
  }
  
  
  
  public void menu1Item2() throws FileNotFoundException {
   String text = textArea_ausgabe.getText();
   JFileChooser fc = new JFileChooser();
   fc.showOpenDialog(null);
   String filename = fc.getSelectedFile().toString();
   File f = new File(filename);
   
    
    
    
   
   if(f.exists()) {
    Scanner s = new Scanner(f);
    String filetext = s.nextLine();
    text = ("\n" + filetext + "\n" + text);
    FileWriter fw;
    try {
     fw = new FileWriter(filename);
     fw.write(text);
     fw.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    
    
    s.close();
   } else {
   try {
    FileWriter fw = new FileWriter(filename);
    fw.write(text + "\n");
    fw.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
    }
  }
  
  
 public void menu1Item3() {
  int i = JOptionPane.showConfirmDialog(null, "Möchten Sie das Programm wirklich beenden?");
  if(i == 0) {
   System.exit(1);
  } 
 }
 
 
 public void menu2Item2() {
  Color c = JColorChooser.showDialog(null, "Wählen Sie eine Farbe", Color.LIGHT_GRAY);
  this.getContentPane().setBackground(c);
  this.MasterContainer_container1.setBackground(c);
  this.MasterContainer_container2.setBackground(c);
  this.MasterContainer_container3.setBackground(c);
  this.MasterContainer_container4.setBackground(c);
  
 }
 
 
 
 
 public void buttonZurücksetzen() {
  textArea_eingabe.setText("Hier Text eingeben");
  textArea_ausgabe.setText("");
 }
 
 public void buttonAusZwischenablage() {
  Clipboard systemClib = Toolkit.getDefaultToolkit().getSystemClipboard();
  Transferable transfer = systemClib.getContents(null);
  
  for (int i = 0; i < transfer.getTransferDataFlavors().length; i++) {
   
   Object content = null;
   try {
    content = transfer.getTransferData(transfer.getTransferDataFlavors()[i]);
   } catch (UnsupportedFlavorException | IOException e) {
    e.printStackTrace();
   }
   if (content instanceof String) {
    String tmp = textArea_eingabe.getText();
    textArea_eingabe.setText(tmp + "\n"+ content);
   }
  } 
 }
 
 
 public void buttonKopieren() {
  String text = textArea_ausgabe.getText();
  Clipboard systemclip =  Toolkit.getDefaultToolkit().getSystemClipboard();
  systemclip.setContents(new StringSelection(text), null);
 }
 
 
 public void buttonDrucken() {
  PrinterJob printjob = PrinterJob.getPrinterJob();
  printjob.setPrintable(new PrintObject());
 if(printjob.printDialog()) {
  try {
   printjob.print();
  } catch (PrinterException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  }
 
 
 }
 
 
 
 
 
public class PrintObject implements Printable {
  
  @Override
  public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
   if (page > 0) {
    return NO_SUCH_PAGE;
   }
   
   Graphics2D g2d = (Graphics2D)g;
   g2d.translate(pf.getImageableX(), pf.getImageableY());
   String text = textArea_ausgabe.getText();
   g2d.drawString(text, 100, 100);
   
   return PAGE_EXISTS;
  }
  
 }
 
 
 
 
}

Hier sollen die Listener rein
Java:
package de.java.luca.textverschluesselung;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonActionListener implements ActionListener{
 
 
  
 
 @Override
 public void actionPerformed(ActionEvent e) {
 
  
 }
}

Die ActionListener sollen Ausgelagert werden.
Die Methoden wie z.B. buttonDrucken() sollen dann in eine 3. Klasse ausgelagert werden.
Also nicht wie jetzt A -> B -> A sondern A -> B -> C. trotzdem muss Klasse C auf die Variablen z.B. die textArea_eingabe zugreifen können.
 

Harry Kane

Top Contributor
Dann viel Spass. Wie oben angedeutet, sieht dein Ansatz unnötig kompliziert aus: Klasse A hat einen JButton, der bekommt eine Instanz von Klasse B als ActionListener, die Instanz von B ruft in ihrer actionPerformed eine Methode von Klasse C auf, die wiederum eine Methode von Klasse A aufruft. Sprich: A muss B kennen, B muss C kenne, und C muss A kennen. Ich denke nicht dass ich dabei möchte sowas umzusetzen.
 

Harry Kane

Top Contributor
Mal ganz blöd gefragt: warum lässt du es nicht so wie es ist?
An ein paar Details solltest du aber dringend noch arbeiten:
- Code zum Auswählen einer Textdatei und einlesen ihres Inhaltes kann in eine separate Methode ausgelagert werden.
- Das hier
Java:
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
String filename = fc.getSelectedFile().toString();
File f = new File(filename);
ist fehleranfällig. Auch wenn der Benutzer im Dialog auf abbrechen klickt, wird mit der ausgewählten Datei was gemacht. Und wenn fc.getSelectedFile() null ist, fliegt eine NullPointerException. Drittens kannst du dir die Umwandlung fc.getSelectedFile() nach String nach File sparen und, nach Beachtung des vorher gesagten, direkt mit fc.getSelectedFile() arbeiten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
B Mit methode Objekt aus anderer Klasse erstellen Java Basics - Anfänger-Themen 6
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
M Klassen Methode aus anderer Klasse nicht aufrufbar Java Basics - Anfänger-Themen 11
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
L Erste Schritte Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 16
C Problem mit Zugriff auf Variable bzw. get-Methode in anderer Klasse Java Basics - Anfänger-Themen 2
A Methode aus anderer Klasse Java Basics - Anfänger-Themen 5
H Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 7
C Objekt X über Methode aus anderer Klasse verändert Java Basics - Anfänger-Themen 3
I Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
S Main-Methode aus anderer Klasse heraus starten Java Basics - Anfänger-Themen 8
S Zugriff auf Methode anderer Klasse Java Basics - Anfänger-Themen 6
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
J Methode anderer Klasse aufrufen ;-) Java Basics - Anfänger-Themen 5
B Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 11
E Methode aus anderer Klasse ausführen Java Basics - Anfänger-Themen 3
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
G Kann methode aus anderer Klasse nicht aufrufen Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
T Methoden Auf Variabler aus anderer Methode zugreifen Java Basics - Anfänger-Themen 5
N Variablen Variable in Main deklarieren und in anderer Methode nutzen Java Basics - Anfänger-Themen 12
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
I Im JFrame Inhalte verändern per Methode aus anderer Class Java Basics - Anfänger-Themen 5
D Methoden Methode in anderer .class Datei Funktioniert nicht. Java Basics - Anfänger-Themen 11
M OOP ActionPerformed Methode aus anderer AP aufrufen? Java Basics - Anfänger-Themen 5
M Aus anderer Methode painten Java Basics - Anfänger-Themen 2
I Kein Zugriff auf erstelltes Objekt aus anderer Methode Java Basics - Anfänger-Themen 6
H Methode aus anderer Datei aufrufen Java Basics - Anfänger-Themen 11
D Variable einer Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 19
G JTabbedPane zugriff von anderer Methode Java Basics - Anfänger-Themen 2
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
A Auf ausgewählte Items der Liste in anderer Methode zugreifen Java Basics - Anfänger-Themen 3
EagleEye methode in anderer java datei aufrufen Java Basics - Anfänger-Themen 27
T Rekursive Methode Java Basics - Anfänger-Themen 13
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
Leyla Spezifischte Methode Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
M Methode sperren bis ein Kriterium erfüllt wurde Java Basics - Anfänger-Themen 3
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
N Throw an Main Methode übergeben Java Basics - Anfänger-Themen 7
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
M Anzahl Kommandozeilenparamter mittels Methode Java Basics - Anfänger-Themen 11
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
J Die statische Main-Methode ändert Instanzvariable? Java Basics - Anfänger-Themen 10
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
T IOStreams read(byte[]b) methode Java Basics - Anfänger-Themen 2
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
M generate Methode für Streams Java Basics - Anfänger-Themen 6
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
I Optionaler Parameter bei Methode, der nur optional ist? Java Basics - Anfänger-Themen 6
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
T Linked List set-Methode Java Basics - Anfänger-Themen 2
D Arrays an replaceAll-Methode übergeben Java Basics - Anfänger-Themen 12
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben