Swing ActionListener kann nicht hinzugefügt werden

  • Themenstarter Themenstarter ActionListener9
  • Beginndatum Beginndatum
A

ActionListener9

Gast
Hallo, ich habe mir mit Netbeans eine kleine GUI gebaut und habe diese Klasse dann in Eclipse eingebunden. Nun möchte ich einigen der Elemente einen ActionListener hinzufügen, um so beim ändern der Komponenten Aktionen auszuführen. Ich kann jedoch keinen ActionListener hinzufügen wo liegt da der fehler?

hier mein code:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package led.table.parts.of.gui;

/**
 *
 */
public class ColorGenerator extends javax.swing.JPanel {

    /**
     * Creates new form Controlpanel
     */
    public ColorGenerator() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        redSlider = new javax.swing.JSlider();
        greenSlider = new javax.swing.JSlider();
        blueSlider = new javax.swing.JSlider();
        redTextField = new javax.swing.JTextField();
        greenTextField = new javax.swing.JTextField();
        blueTextField = new javax.swing.JTextField();
        colorPreview = new javax.swing.JPanel();

        redSlider.setMajorTickSpacing(10);
        redSlider.setMaximum(255);
        redSlider.setOrientation(javax.swing.JSlider.VERTICAL);
        redSlider.setPaintTicks(true);
        redSlider.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                redSliderMouseClicked(evt);
            }
        });
        redSlider.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                redSliderStateChanged(evt);
            }
        });

        greenSlider.setMajorTickSpacing(10);
        greenSlider.setMaximum(255);
        greenSlider.setOrientation(javax.swing.JSlider.VERTICAL);
        greenSlider.setPaintTicks(true);

        blueSlider.setMajorTickSpacing(10);
        blueSlider.setMaximum(255);
        blueSlider.setOrientation(javax.swing.JSlider.VERTICAL);
        blueSlider.setPaintTicks(true);

        redTextField.setForeground(new java.awt.Color(255, 0, 0));

        greenTextField.setForeground(new java.awt.Color(0, 255, 0));

        blueTextField.setForeground(new java.awt.Color(0, 0, 255));

        colorPreview.setBackground(new java.awt.Color(0, 0, 0));
        colorPreview.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout colorPreviewLayout = new javax.swing.GroupLayout(colorPreview);
        colorPreview.setLayout(colorPreviewLayout);
        colorPreviewLayout.setHorizontalGroup(
            colorPreviewLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 0, Short.MAX_VALUE)
        );
        colorPreviewLayout.setVerticalGroup(
            colorPreviewLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 39, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(colorPreview, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(redTextField, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(redSlider, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(greenSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(greenTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(blueSlider, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(blueTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(colorPreview, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(redTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(greenTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(blueTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(blueSlider, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 150, Short.MAX_VALUE)
                    .addComponent(greenSlider, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(redSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>

    private void redSliderStateChanged(javax.swing.event.ChangeEvent evt) {
        
    }

    private void redSliderMouseClicked(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
    }

    // Variables declaration - do not modify
    private javax.swing.JSlider blueSlider;
    private javax.swing.JTextField blueTextField;
    private javax.swing.JPanel colorPreview;
    private javax.swing.JSlider greenSlider;
    private javax.swing.JTextField greenTextField;
    private javax.swing.JSlider redSlider;
    private javax.swing.JTextField redTextField;
    // End of variables declaration
}
 
Actionlistener gibts nicht bei allen Komponenten. Eine Action wird immer nur geworfen, wenn der User auf was draufdrückt und damit was auslösen soll, was ihm dann auch Feedback geben soll. Bei einem Slider z.B wird keine Action geworfen, da wird ein ChangeEvent geworfen was du mit einem ChangeListener abfangen kannst.
 
Actionlistener gibts nicht bei allen Komponenten. Eine Action wird immer nur geworfen, wenn der User auf was draufdrückt und damit was auslösen soll, was ihm dann auch Feedback geben soll. Bei einem Slider z.B wird keine Action geworfen, da wird ein ChangeEvent geworfen was du mit einem ChangeListener abfangen kannst.

stimmt nicht ganz ...

JTextField z.B. bietet auch ein ActionEvent an ... da der interne KeyListener (welcher unter anderem auch für die
Eingabe zuständig ist) bei VK_ENTER das ActionEvent erzeugt und an alle registrierten ActionListener gibt ...
ergo : ActionListener gibt es eben nicht nur ausschließlich bei component zum "draufdrücken" ... (wobei die beschreibung an sich witzlos ist da man im prinzip auf alles in einer GUI klicken kann)
 
da der interne KeyListener (welcher unter anderem auch für die
Eingabe zuständig ist) bei VK_ENTER das ActionEvent erzeugt und an alle registrierten ActionListener gibt ...

Die Eingabe regelt das Document von einem Textfeld.

Der (vermutlich) ActionListener wird wahrscheinlich auch eher in die ActionMap gelegt, anstatt einen KeyListener dran zu hängen.
 
Du kannst buttons auch mit Enter auslösen, das ist der gleiche mechanismus. Mit was draufdrücken ist genauso die Entertaste gemeint.
 

Zurück
Oben