Lemon juice
Lemon juice

Reputation: 31

Invalid Component Netbeans Java Swing /Maven

enter image description here My project was working perfectly, and then somehow when I opened netbeans I was surprised to see this exception:

java.lang.InstantiationException: com.mycompany.mma.CustomTable
    at java.base/java.lang.Class.newInstance(Class.java:678)
    at org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:155)
    at org.netbeans.modules.form.RADComponent.createBeanInstance(RADComponent.java:227)
    at org.netbeans.modules.form.RADComponent.initInstance(RADComponent.java:166)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:761)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:805)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:805)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:484)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:260)
    at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327)
    at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:123)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:77)
    at org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
    at org.openide.util.Mutex.readAccess(Mutex.java:231)
    at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251)
    at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324)
    at org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436)
    at org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256)
    at org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64)
    at org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NoSuchMethodException: com.mycompany.mma.CustomTable.<init>()
    at java.base/java.lang.Class.getConstructor0(Class.java:3641)
    at java.base/java.lang.Class.newInstance(Class.java:665)
    ... 37 more
java.lang.InstantiationException: com.mycompany.mma.CustomTable
    at java.base/java.lang.Class.newInstance(Class.java:678)
    at org.netbeans.modules.form.CreationFactory.createDefaultInstance(CreationFactory.java:155)
    at org.netbeans.modules.form.RADComponent.createBeanInstance(RADComponent.java:227)
    at org.netbeans.modules.form.RADComponent.initInstance(RADComponent.java:166)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:761)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:805)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:805)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.restoreComponent(GandalfPersistenceManager.java:805)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadComponent(GandalfPersistenceManager.java:949)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:484)
    at org.netbeans.modules.form.GandalfPersistenceManager.loadForm(GandalfPersistenceManager.java:260)
    at org.netbeans.modules.form.FormEditor$2.run(FormEditor.java:327)
    at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:268)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.doEventAccess(NbMutexEventProvider.java:123)
    at org.netbeans.modules.openide.util.NbMutexEventProvider$Event.readAccess(NbMutexEventProvider.java:77)
    at org.netbeans.modules.openide.util.LazyMutexImplementation.readAccess(LazyMutexImplementation.java:71)
    at org.openide.util.Mutex.readAccess(Mutex.java:231)
    at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:251)
    at org.netbeans.modules.form.FormEditor.loadFormData(FormEditor.java:324)
    at org.netbeans.modules.nbform.FormEditorSupport.loadOpeningForm(FormEditorSupport.java:436)
    at org.netbeans.modules.nbform.FormDesignerTC.loadForm(FormDesignerTC.java:256)
    at org.netbeans.modules.nbform.FormDesignerTC.access$300(FormDesignerTC.java:64)
    at org.netbeans.modules.nbform.FormDesignerTC$PreLoadTask$1.run(FormDesignerTC.java:245)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NoSuchMethodException: com.mycompany.mma.CustomTable.<init>()
    at java.base/java.lang.Class.getConstructor0(Class.java:3641)
    at java.base/java.lang.Class.newInstance(Class.java:665)
    ... 39 more

I created a custom table and a custom button with slide effect animation. It was working perfectly, but then this happened

This is the code for the custom table:

import java.awt.Color;
import static java.awt.Color.black;
import static java.awt.Color.red;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;

/**
 *
 * @author Haythem
 */
public class CustomTable extends JTable{
        
    public CustomTable(int a , int b ,int c){    
        getTableHeader().setDefaultRenderer(new CustomTableHeader(a,b,c));
        getTableHeader().setPreferredSize(new Dimension(0,70));
        setDefaultRenderer(Object.class, new CustomTableCell());
        setRowHeight(45);
        setBorder(null);
        this.setOpaque(true);
        this.setBackground(new java.awt.Color(10, 100, 10));
this.isCellEditable(-1, -1);
this.setEditingRow(-1);
this.setEditingColumn(-1);
this.setDefaultEditor(Object.class, null);

        
    }
    
   private class CustomTableHeader extends DefaultTableCellRenderer{

        public CustomTableHeader(int a , int b , int c) {
            setcolor(a, b, c);
        }
        
        int l,k,m;
        public void setcolor(int a , int b , int c){
       this.l=a;
       this.k=b;
       this.m=c;
        }
       @Override
       public Component getTableCellRendererComponent(JTable table , Object o , boolean b , boolean b1 , int i , int i2){
           Component c= super.getTableCellRendererComponent(table, o, b1, b1, i, i2);
           c.setBackground(new java.awt.Color(l,k,m));
           c.setFont(new Font("AraAlmBon",Font.BOLD,14));
           return c;
       }
        
    }
    private class CustomTableCell extends DefaultTableCellRenderer{

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
           Component c=super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
            if(isCellSelected(row, column)){
               if(row%2==0){
                   c.setBackground(new java.awt.Color(33,103,153));
               }
               else{
                    c.setBackground(new java.awt.Color(29,86,127));
               }
           }
           else{
                if(row%2==0){
                    c.setBackground(new java.awt.Color(50,50,50));
               }
               else{
                    c.setBackground(new java.awt.Color(30,30,30));
               }
           }
           c.setForeground(new Color(200,200,200));
           setBorder(new EmptyBorder(0,5,0,5));
           return c;
        }
        
    }
  
    private class CustomTablef extends DefaultTableCellRenderer{

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/OverriddenMethodBody
        }
    }
}

This is the custom button code:

import javax.swing.JButton;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.RoundRectangle2D;

/**
 *
 * @author Haythem
 */
public class Button extends JButton{
    public float getAnimate() {
        return animate;
    }

    /**
     * @param animate the animate to set
     */
    public void setAnimate(float animate) {
        this.animate = animate;
        repaint();
    }
    private float animate;
  public Button(){
      setOpaque(false);
      setContentAreaFilled(false);
  }
    @Override
public void paint(Graphics grphcs){
Graphics2D g;
g=(Graphics2D)grphcs.create();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
double width=getWidth();
double height=getHeight();
double x=animate*width-width;
Area area=new Area(new RoundRectangle2D.Double(x,0,width,height,0,0));
g.setColor(new java.awt.Color(0, 110, 50));
g.fill(area);
g.dispose();
    super.paint(grphcs);
}
}

I tried to remove the component and try again. It worked for a while and then the issue resurfaced.

Upvotes: 0

Views: 407

Answers (1)

Lemon juice
Lemon juice

Reputation: 31

The newInstance() call failed throwing an exception (NoSuchMethodException) Because no default constructor for the custom class was found thus what i did was create a default constructor and that fixed the issue

Upvotes: 2

Related Questions