Error al crear JToolBar

Todos los botones se agregan bien, excepto los botones de colores.
Aparece este error al agregar botones a una barra de herramientas
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Sketcher.SketcherFrame$ColorAction cannot be cast to javax.swing.Icon

ColorAction es una clase para crear botones de barra de herramientas que cambian el color de fondo del JFrame. Se extiende javax.swing.AbstractAction.
Los botones de tipo ColorActionse almacenan en una ColorActions[]matriz y tienen sus SMALL_ICONpropiedades establecidas en los valores apropiados.

Seguimiento de pila :

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: Sketcher.SketcherFrame$ColorAction cannot be cast to javax.swing.Icon
    at javax.swing.AbstractButton.setIconFromAction(Unknown Source)
    at javax.swing.AbstractButton.configurePropertiesFromAction(Unknown Source)
    at javax.swing.AbstractButton.setAction(Unknown Source)
    at javax.swing.JButton.<init>(Unknown Source)
    at Sketcher.SketcherFrame.addToolBarButton(SketcherFrame.java:182)
    at Sketcher.SketcherFrame.createToolbar(SketcherFrame.java:174)
    at Sketcher.SketcherFrame.<init>(SketcherFrame.java:27)
    at Sketcher.Sketcher.createGUI(Sketcher.java:16)
    at Sketcher.Sketcher.access$1(Sketcher.java:15)
    at Sketcher.Sketcher$1.run(Sketcher.java:10)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Métodos destacados

private void createColorMenu() {
    createElementColorActions();
    colorMenu = new JMenu("Color");
    colorMenu.setMnemonic('M');
    createRadioButtonDropDown(colorMenu,colorActions,blueAction);
    menuBar.add(colorMenu);
}  

y

private void createRadioButtonDropDown(JMenu menu, Action[] actions,Action selected){
        ButtonGroup group = new ButtonGroup();
        JRadioButtonMenuItem item = null;
        for(Action action : actions){
            group.add(menu.add(item = new JRadioButtonMenuItem(action)));
            if(action==selected){
                item.setSelected(true);
            }
        }
    }

y

private void addToolBarButton(Action action){
        >>JButton button = new JButton(action);
        button.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(2,5,5,2),
                            BorderFactory.createRaisedBevelBorder()));
        button.setHideActionText(true);
        toolBar.add(button);
    }

y

private void createToolbar(){
        for(FileAction action : fileActions){
            if(action!=exitAction && action!=closeAction){
                addToolBarButton(action);
            }
        }
        toolBar.addSeparator();
        for(ColorAction action : colorActions){
            >>addToolBarButton(action);
        }
        toolBar.addSeparator();
        for(TypeAction action : typeActions){
            addToolBarButton(action);
        }
    }

Archivo de constantes que contiene rutas a las imágenes

import java.awt.Color;
import javax.swing.*;
public class SketcherConstants {
    public final static int LINE = 101;
    public final static int RECTANGLE = 102;
    public final static int CIRCLE = 103;
    public final static int CURVE = 104;

    public final static int DEFAULT_ELEMENT_TYPE = LINE;
    public final static Color DEFAULT_ELEMENT_COLOR = Color.blue;

    public final static String imagePath = "H:/Fasih/SketcherIcons/";
    public static final Icon NEW16 = new ImageIcon(imagePath+"new.GIF");
    public static final Icon OPEN16 = new ImageIcon(imagePath+"open.GIF");
    public static final Icon SAVE16 = new ImageIcon(imagePath+"save.GIF");
    public static final Icon PRINT16 = new ImageIcon(imagePath+"print.GIF");
    public static final Icon SAVEAS16 = new ImageIcon(imagePath+"saveas.GIF");

    public static final Icon LINE16 = new ImageIcon(imagePath+"line.PNG");
    public static final Icon CURVE16 = new ImageIcon(imagePath+"curve.PNG");
    public static final Icon RECTANGLE16 = new ImageIcon(imagePath+"square.PNG");
    public static final Icon CIRCLE16 = new ImageIcon(imagePath+"circle.PNG");

    public static final Icon RED16= new ImageIcon(imagePath+"red.GIF");
    public static final Icon GREEN16= new ImageIcon(imagePath+"green.GIF");
    public static final Icon YELLOW16= new ImageIcon(imagePath+"yellow.GIF");
    public static final Icon BLUE16= new ImageIcon(imagePath+"blue.GIF");
}

y

class ColorAction extends AbstractAction {
        public ColorAction(String name,Color color){
            super(name);
            this.color = color;
        }
        public ColorAction(String name,Color color,char ch,int modifiers){
            this(name,color);
            putValue(ACCELERATOR_KEY,KeyStroke.getKeyStroke(ch,modifiers));
            int index = name.toUpperCase().indexOf(ch);
            if(index!=-1){
                putValue(DISPLAYED_MNEMONIC_INDEX_KEY,index);
            }
        }
        public void actionPerformed(ActionEvent e){
            elementColor = color;
            getContentPane().setBackground(color);
        }
        private Color color;
    }

Si elimino los botones de color, los botones de abrir, cerrar y guardar se agregan perfectamente. No tengo idea de por qué no se pueden agregar.

Respuesta 1

Spring docs dice que es necesario configurar el cliente http para WebClient manualmente para establecer tiempos de espera: https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-client-. ..

Soy un desarrollador de PHP pero estoy haciendo la transición a Java. (muy nuevo en Java en este momento) ¿Hay alguna manera de hacer una llamada ajax a un Servlet y responder con la salida de un archivo .jsp separado (en lugar de ...

Estoy trabajando en una función de filtro que puede filtrar con muchos parámetros y para ello estoy usando Java Streams. Ese es mi código: filtro de vacío público (String cours, String prof, String salle, String ...

¿Hay alguna diferencia en la eficiencia entre los 2 fragmentos de código a continuación? ¿El primero requiere que asigne memoria para el objeto? Clase c = a.getClass (); if (str! = null) c.dosomething (c ....