Action listener von Button

Status
Nicht offen für weitere Antworten.

andreas2505

Bekanntes Mitglied
Hallo, ich habe folgendes Problem.

ich habe hier ein JFrame erstellt und will nun dem Button eine Aktion anfügen, wenn der Button geklickt wird. Ich habe über den Konstruktor erstmal das komplette Frame erstellt und will nun in der main-Methode ein neues Frame des Konstruktors aufrufen und verschiedene Aktionen durchführen. Mein Problem ist, dass ich von verschiedenen Klassen Methoden und Objekte aufrufe und immer mit diesen weiterarbeiten muss. Irgendwie funktioniert das nicht so richtig. Beim aufrufen dieses Standes hier kommt der Fehler cannot find symbol bei der main-methode in der Zeile (markiert).

Kann mir wer helfen bei allen Problemen? ;(

Java:
import java.util.*;
import java.math.BigInteger;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

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


 
public class HVES
{


    
    public HVES() {
        final JFrame f = new JFrame("HVES"); 
        f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        GridBagLayout gbl = new GridBagLayout();
        GridBagConstraints gbc = new GridBagConstraints();
        JLabel rsa = new JLabel(new ImageIcon("ksa.jpg"));
        rsa.setPreferredSize(new Dimension(400,200));
        JLabel unibw = new JLabel(new ImageIcon("unibw.gif"));
        unibw.setPreferredSize(new Dimension(400,250));
        ImageIcon buttonIcon = new ImageIcon("key.jpg");
        JButton bw = new JButton("Text verschlüsseln", buttonIcon);
        
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridwidth = gbc.REMAINDER;
        gbl.setConstraints(bw,gbc);
        gbc.fill = GridBagConstraints.NONE;
        gbc.ipady = 0;
        gbc.weighty = 1.0;
        gbc.anchor = GridBagConstraints.LAST_LINE_START;
        gbc.insets = new Insets(10,0,0,0);
        gbc.gridx = 0;
        gbc.gridwidth = 1;
        gbc.gridy = 0;
        gbl.setConstraints(unibw,gbc);
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.ipady = 0;
        gbc.weighty = 1.0;
        gbc.anchor = GridBagConstraints.LAST_LINE_END;
        gbc.insets = new Insets(10,0,0,0);
        gbc.gridx = 10;
        gbc.gridwidth = 1;
        gbc.gridy = 0;
        gbl.setConstraints(rsa,gbc);
        f.setContentPane(new BackGroundPane("hintergrund2.jpg"));
        f.getContentPane().setLayout(gbl);
        f.getContentPane().add(unibw);
        f.getContentPane().add(bw);
        f.getContentPane().add(rsa);
        JMenuBar menuBar = new JMenuBar(); 
        JMenu fileMenu1 = new JMenu( "Datei" ); 
        JMenu fileMenu2 = new JMenu( "Optionen" );
        ImageIcon icon1 = new ImageIcon("folder.png" );
        Image i1 = icon1.getImage();
        Image i2 = i1.getScaledInstance(20,20,Image.SCALE_FAST);
        icon1.setImage(i2);
        JMenuItem item1 = new JMenuItem("Öffnen", icon1);
        JMenuItem item2 = new JMenuItem("Speichern");
        JMenuItem item3 = new JMenuItem("Beenden");
        /**item3.add(exitAction);*/
        fileMenu1.add(item1);
        fileMenu1.add(item2);
        fileMenu1.add(item3);
        menuBar.add( fileMenu1 ); 
        menuBar.add( fileMenu2 ); 
        f.setJMenuBar( menuBar );
        f.setSize( 1000, 800 ); 
    
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                f.setVisible(true);
            }
        });
    }
        
        
    public static void main(String[] args) {
        
        HVES h = new HVES();
        SymKS sym = new SymKS();
        int keyLength = sym.getSchluessellaenge();
        AsymKS asym = new AsymKS();
        asym.createKeys();
        SessionKey key = new SessionKey();
        bw.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                [code]f.remove(bw);
int[] sesKey = key.createSessionKey(keyLength);
key.ausgabe(sesKey); }});
}[/code]
 
bw, bzw. f sind da nicht bekannt, da sie nur im konstruktor der klasse lokal definiert wurden.

ich würde diese funktionalitäten auch immer in der klasse selbst einfügen, welche die buttons etc. erstellt und somit verwaltet.

du könntest den stück code noch in den konstruktor schieben .. dann sollte es klappen
edit: seh grad da verweist du ja noch auf key .. hm, das macht die sache schon umständlicher ^^

probier mal hässlicherhalber den button und das frame: final static .. zu machen zu aus dem konstruktor herauszuziehen und dort zu erstellen
 
Zuletzt bearbeitet:
ok so funzt das erstmal.
Nun folgendes Problem. Das mit dem remove von dem Button klappt nicht so richtig. Der geht erst weg wenn ich das frame noch 2-3 mal minimiere und wiederherstelle.

Wie kann man das ändern dass das sofort weg ist nachdem ich geklickt hab?
 
ja da gibts was aber ich konnte mir nie merken was ^^ .. ist sowas wie validate, validateTree, updateUI oder sowas in der Art .. nen flüchtiger Blick in der Api gab mir grad keine Erleuchtung ^^
 
Niemals. Nie, nie, nie, nie, nie wird [c]updateUI[/c] benötigt. Das ist wie Graphikkarte tauschen (installiert das gesamte ComponentUI neu). ;-)

[c]revalidate()[/c] und dann [c]repaint()[/c] auf dem Kontainer den man verändert hat.

Ebenius
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben