Porque esse null pointer exception?

Olá, eu estou criando uma biblioteca para formatar as minhas interfaces, como se fosse um look and feel, eu invoco um objeto e chamo o método formatar do mesmo e passo como parâmetro um container, então tudo que estiver dentro desse container é formatado, já testei e usei muitas vezes essa classe e nunca deu nenhum erro mais agora a pouco quando eu comecei a implementar a formatação para jcombobox aparece isso:
`

Exception in thread "main" java.lang.NullPointerException
at LookAndFeel.TKFLookAndFeel.formatar(TKFLookAndFeel.java:143)
at Main.Login.format2(Login.java:343)
at Main.Login.<init>(Login.java:98)
at Main.Login.main(Login.java:162)

`
A classe da biblioteca:

`

package LookAndFeel;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Polygon;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedTKFLookAndFeelException;
import javax.swing.border.EtchedBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicComboBoxUI;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.geom.Area;
import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Objects;

import javax.accessibility.Accessible;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.JWindow;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.UnsupportedTKFLookAndFeelException;
import javax.swing.border.AbstractBorder;
import javax.swing.event.PopupMenuEvent;
 import javax.swing.event.PopupMenuListener;
import javax.swing.plaf.ColorUIResource;
import javax.swing.plaf.ComboBoxUI;
import javax.swing.plaf.basic.BasicArrowButton;
import javax.swing.plaf.basic.BasicComboBoxUI;
import javax.swing.plaf.basic.BasicComboPopup;

public class TKFLookAndFeel implements KeyListener,FocusListener{
private static final Color BACKGROUND = Color.GREEN;
private static final Color FOREGROUND = Color.BLUE;
private static final Color SELECTIONFOREGROUND = Color.RED;
public boolean boo = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
JLabel caps = new JLabel("!");
public static List<Component> getAllComponents(final Container c) {
            Component[] comps = c.getComponents();
            List<Component> compList = new ArrayList<Component>();
            for (Component comp : comps) {
                compList.add(comp);
                if (comp instanceof Container){
                    compList.addAll(getAllComponents((Container) comp));
                }
            }
            return compList;
        }

 static ImageIcon getTriangulo() {		
	BufferedImage buffer = new BufferedImage(30,30, BufferedImage.TRANSLUCENT);
	Graphics2D g = buffer.createGraphics();
	Polygon p = new Polygon();
	g.setColor(Color.red);
	p.addPoint(0,15);
	p.addPoint(15, 30);
	p.addPoint(30,15);
	g.fillPolygon(p);
	return new ImageIcon(buffer);
}

 public void formatar(Container c){
  caps.setBorder(BorderFactory.createEmptyBorder(0,0,0,5));
   caps.setVisible(false);    
   c.addKeyListener(this);
   try {
   UIManager.setTKFLookAndFeel(UIManager.getSystemTKFLookAndFeelClassName());
   } catch (ClassNotFoundException ex) {
   Logger.getLogger(TKFLookAndFeel.class.getName()).log(Level.SEVERE, null, ex);
   } catch (InstantiationException ex) {
   Logger.getLogger(TKFLookAndFeel.class.getName()).log(Level.SEVERE, null, ex);
   } catch (IllegalAccessException ex) {
   Logger.getLogger(TKFLookAndFeel.class.getName()).log(Level.SEVERE, null, ex);
   } catch (UnsupportedTKFLookAndFeelException ex) {
   Logger.getLogger(TKFLookAndFeel.class.getName()).log(Level.SEVERE, null, ex);
   }
     List<Component> list = getAllComponents(c);
       for(Component component:list){        
         if(component instanceof JButton){
               System.out.println(((JButton) component).getText());
               if(((JButton) component).getIcon()==null){
                 if(component.getParent().getLayout() instanceof FlowLayout){
                      component.setFont(new Font("Comic Sans MS",Font.BOLD,20));
                 }else{
                      component.setFont(new Font("Comic Sans MS",Font.BOLD,30));
                 }
               }
         component.setBackground(Color.RED);
                                ((JButton) component).setBorderPainted(false);
                                component.setFocusable(false);

                               if(component.getParent().getLayout() instanceof FlowLayout){
                                   component.addMouseListener(new MouseAdapter(){
                                    Dimension dn = new Dimension(0,0);

                                           public void mouseReleased(MouseEvent arg0) {
                                                   component.setSize(dn);
                                           }

                                           public void mousePressed(MouseEvent arg0) {
                                                   component.setSize(component.getWidth()-10,component.getHeight()-10);
                                           }

                                           public void mouseExited(MouseEvent arg0) {
                                                   component.setSize(dn);
                                           }

                                           public void mouseEntered(MouseEvent arg0) {
                                                   dn = new Dimension(component.getWidth(),component.getHeight());
                                                   component.setSize(component.getWidth(),component.getHeight()+5);
                                           }
                                      });
                               }else if(!(component.getParent().getLayout() instanceof GridLayout)){
                                component.addMouseListener(new MouseAdapter(){
                                      Dimension dn = new Dimension(0,0);
                                      public void mouseReleased(MouseEvent arg0) {
                                              component.setSize(dn);
                                              
                                      }
                                      public void mousePressed(MouseEvent arg0) {
                                              component.setSize(component.getWidth()-10,component.getHeight()-10);
                                              
                                      }
                                      public void mouseExited(MouseEvent arg0) {
                                              component.setSize(dn);
                                              
                                      }
                                      public void mouseEntered(MouseEvent arg0) {
                                              dn = new Dimension(component.getWidth(),component.getHeight());
                                              component.setSize(component.getWidth()+5,component.getHeight()+5);
                                              
                                      }
                                });
                                
                               }
          }else if(component instanceof JLabel){
                      if(((JLabel) component).getIcon()==null){
                          if(component.getParent().getLayout() instanceof GridLayout){
                            ((JLabel)component).setHorizontalAlignment(JLabel.RIGHT);
                            ((GridLayout)component.getParent().getLayout()).setHgap(10);
                            ((GridLayout)component.getParent().getLayout()).setVgap(10);
                          }else{
                            ((JLabel)component).setHorizontalAlignment(JLabel.CENTER);
                          }
                          if(component.getParent().getLayout() instanceof FlowLayout
                             ||component.getParent().getLayout() instanceof GridLayout){
                                component.setFont(new Font("Comic Sans MS",Font.BOLD,20));
                          }else{
                                component.setFont(new Font("Comic Sans MS",Font.BOLD,30)); 
                          }
                      }
                  }else if(component instanceof JComboBox){
                        UIManager.put("ComboBox.border", new borda());
                        UIManager.put("ComboBox.foreground", FOREGROUND);
                        UIManager.put("ComboBox.background", BACKGROUND);
                        UIManager.put("ComboBox.selectionForeground", SELECTIONFOREGROUND);
                        UIManager.put("ComboBox.selectionBackground", BACKGROUND);
                        ((JComboBox)component).setFont(new Font("Comic Sans MS",Font.BOLD,30));
                        ((JComboBox)component).setUI(new BasicComboBoxUI() {
                        protected JButton createArrowButton() {
                            JButton b = new JButton(getTriangulo());
                            b.setContentAreaFilled(false);
                            b.setBorderPainted(false);
                            return b; 
                       }
                      });
                    Object o = ((JComboBox)component).getAccessibleContext().getAccessibleChild(0);
                    if (o instanceof JComponent) {
                      JComponent comp = (JComponent) o;
                      comp.setBorder(new RoundedCornerBorder());
                      comp.setForeground(FOREGROUND);
                      comp.setBackground(BACKGROUND);
                    }
                    ((JComboBox)component).addPopupMenuListener(new HeavyWeightContainerListener());

                  }else if(component instanceof Container){
                      component.setBackground(Color.YELLOW);
                  }
                  if(component instanceof Window){
                      ((Window) component).addWindowListener(new WindowAdapter(){
                            public void windowClosing(WindowEvent e) {
                                System.out.println("fechou");
                                System.exit(0);
                            }
                        });
                  }
                  if(component instanceof JTextField){
                      ((JTextField) component).setLayout(new BorderLayout());
                      component.addKeyListener(this);
                      component.addFocusListener(this);  
                      component.setFont(new Font("Comic Sans MS",Font.BOLD,20)); 
                      component.setBackground(Color.WHITE);
                      ((JTextField) component).setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED, Color.BLACK, Color.BLACK));
                  }
                  if(component instanceof JPanel){
                      if(((JPanel)component).getLayout() instanceof GridLayout){
                          ((JPanel) component).setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
                      }
                  }
                  if(component instanceof JTextArea){
                      component.setFont(new Font("Comic Sans MS",Font.BOLD,15));
                      component.setBackground(Color.WHITE);
                      ((JTextArea) component).setLineWrap(true);
                  }
       }
    }

public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_CAPS_LOCK){
   boo = !boo;
   if(e.getSource() instanceof JTextField){
       ((Container)e.getSource()).add(caps,BorderLayout.EAST);
       caps.setVisible(boo);
   }
}
}
public void keyReleased(KeyEvent e) {
}

public void focusGained(FocusEvent e) {
boo = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
((Container)e.getSource()).add(caps,BorderLayout.EAST);
  caps.setVisible(boo);
 }
public void focusLost(FocusEvent e) {
caps.setVisible(false);
 }
 }
class borda extends AbstractBorder {
 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int r = 12;
int w = width  - 1;
int h = height - 1;

Area round = new Area(new RoundRectangle2D.Double(x, y, w, h, r, r));

Container parent = c.getParent();
if (Objects.nonNull(parent)) {
    g2.setPaint(parent.getBackground());
    Area corner = new Area(new Rectangle2D.Double(x, y, width, height));
    corner.subtract(round);
    g2.fill(corner);
}
g2.setPaint(c.getForeground());
g2.draw(round);
g2.dispose();
}
@Override public Insets getBorderInsets(Component c) {
return new Insets(4, 8, 4, 8);
}
@Override public Insets getBorderInsets(Component c, Insets insets) {
insets.set(4, 8, 4, 8);
return insets;
}


public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
return null;
}
}
class HeavyWeightContainerListener implements PopupMenuListener {
@Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
EventQueue.invokeLater(new Runnable() {
  @Override public void run() {
    JComboBox combo = (JComboBox) e.getSource();
    Accessible a = combo.getUI().getAccessibleChild(combo, 0);
    if (a instanceof BasicComboPopup) {
      BasicComboPopup pop = (BasicComboPopup) a;
      Container top = pop.getTopLevelAncestor();
      if (top instanceof JWindow) {
        //http://ateraimemo.com/Swing/DropShadowPopup.html
        System.out.println("HeavyWeightContainer");
        ((JWindow) top).setBackground(new Color(0x0, true));
      }
    }
  }
  });
  }
 @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
 @Override public void popupMenuCanceled(PopupMenuEvent e) {}
 }
 class RoundedCornerBorder extends AbstractBorder {
 protected static final int ARC = 12;
 @Override public void paintBorder(
  Component c, Graphics g, int x, int y, int width, int height) {
 Graphics2D g2 = (Graphics2D) g.create();
 g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
 int r = ARC;
 int w = width  - 1;
 int h = height - 1;

 Area round = new Area(new RoundRectangle2D.Float(x, y, w, h, r, r));
 if (c instanceof JPopupMenu) {
  g2.setPaint(c.getBackground());
  g2.fill(round);
 } else {
  Container parent = c.getParent();
      if (Objects.nonNull(parent)) {
        g2.setPaint(parent.getBackground());
        Area corner = new Area(new Rectangle2D.Float(x, y, width, height));
        corner.subtract(round);
        g2.fill(corner);
      }
    }
    g2.setPaint(c.getForeground());
    g2.draw(round);
    g2.dispose();
  }
@Override public Insets getBorderInsets(Component c) {
 return new Insets(4, 8, 4, 8);
  }
  @Override public Insets getBorderInsets(Component c, Insets insets) {
    insets.set(4, 8, 4, 8);
    return insets;
  }
  }

class RoundedCornerBorder1 extends RoundedCornerBorder {
  //http://ateraimemo.com/Swing/RoundedComboBox.html
  @Override public void paintBorder(
  Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
int r = ARC;
int w = width  - 1;
int h = height - 1;

Area round = new Area(new RoundRectangle2D.Float(x, y, w, h, r, r));
Rectangle b = round.getBounds();
b.setBounds(b.x, b.y + r, b.width, b.height - r);
round.add(new Area(b));

Container parent = c.getParent();
if (Objects.nonNull(parent)) {
  g2.setPaint(parent.getBackground());
  Area corner = new Area(new Rectangle2D.Float(x, y, width, height));
  corner.subtract(round);
  g2.fill(corner);
}

g2.setPaint(c.getForeground());
g2.draw(round);
    g2.dispose();
  }
}

class RoundedCornerBorder2 extends RoundedCornerBorder {
  @Override public void paintBorder(
  Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
int r = ARC;
int w = width  - 1;
int h = height - 1;

Path2D.Float p = new Path2D.Float();
p.moveTo(x, y);
p.lineTo(x, y + h - r);
p.quadTo(x, y + h, x + r, y + h);
p.lineTo(x + w - r, y + h);
p.quadTo(x + w, y + h, x + w, y + h - r);
p.lineTo(x + w, y);
p.closePath();
Area round = new Area(p);

g2.setPaint(c.getBackground());
g2.fill(round);

g2.setPaint(c.getForeground());
g2.draw(round);
g2.setPaint(c.getBackground());
g2.drawLine(x + 1, y, x + width - 2, y);
    g2.dispose();
 }
}
class Arrow extends BasicArrowButton{
int direction;
public Arrow(int direction) {
	super(direction);
}
static ImageIcon getTriangulo() {		
	BufferedImage buffer = new BufferedImage(600, 600, BufferedImage.TRANSLUCENT);
	Graphics2D g = buffer.createGraphics();
	Polygon p = new Polygon();
	g.setColor(Color.red);
	p.addPoint(0, 50);
	p.addPoint(25, 0);
	p.addPoint(50, 50);
	g.fillPolygon(p);
	return new ImageIcon(buffer);
}
protected void paintComponent(Graphics g) {     
    if(direction==BasicArrowButton.SOUTH){
    	ImageIcon img = getTriangulo();
    	 img.paintIcon(this, g,10,10);
    }
 }
 }
class ColorArrowUI extends BasicComboBoxUI {

public static ComboBoxUI createUI(JComponent c) {
    return new ColorArrowUI();
}
static ImageIcon getTriangulo() {		
	BufferedImage buffer = new BufferedImage(600, 600, BufferedImage.TRANSLUCENT);
	Graphics2D g = buffer.createGraphics();
	Polygon p = new Polygon();
	g.setColor(Color.red);
	p.addPoint(0, 50);
	p.addPoint(25, 0);
	p.addPoint(50, 50);
	g.fillPolygon(p);
	return new ImageIcon(buffer);
}
BasicArrowButton basic = new BasicArrowButton(BasicArrowButton.SOUTH);
@Override protected JButton createArrowButton() {
	BasicArrowButton ba = new BasicArrowButton(BasicArrowButton.SOUTH);
    return ba; 
}
}

`
Classe que estou montando a janela (excedi a quanidade de caracteres então adicionei o arquivo):
código.txt (12.1 KB)
Alguém sabe me explicar o porque desse null pointer exception?

Olá

O problema deve estar na classe TKFLookAndFeel no método formatar na linha 143, não encontrei erros no código postado.

Olá, eu mudei o nome da classe antes de postar o código porque achei que o nome estava ruim, mais o nome mesmo da classe é TKFLookAndFeel, eu vou mudar aqui

Mas você viu o que tem na linha 143?

Como o código está muito bagunçado, fica dificil de identificar algum problema, a linha 143 aponta para:

if(component.getParent().getLayout() instanceof FlowLayout){

mas para vc, pode ser outra linha.

Se esta for a linha, então o problema deve ser nos botões, tente verificar qual botão está tendo problemas.

é o botão send da jdialog e

se eu fizer assim:
`

if(((JButton)component).getParent().getLayout() instanceof FlowLayout){

`
não é acusado erro algum porém outro nullpointer exception surge na linha 154 e se eu também adicionar o cast não adianta.

Impossível ser o botão send pois ele está no format1 e o erro está no format2.

Insira apos if(component instanceof JButton){

System.out.println("=Checando botão");
System.out.println("Classe: " + component.getClass().getSimpleName()); // deve imprimir JButton
System.out.println("Texto: " + ((JButton) component).getText());
System.out.println("Tem parent?: " + component.getParent() != null); // deve imprimir true
System.out.println("Layout do parent: " + component.getParent().getLayout().getClass().getSimpleName());
System.out.println("=Fim");

Dessa forma dará para ver o que está acontecendo, por exemplo o tipo do component pode ser um q estende o JButton e por isso não tem parent, o texto do botao para indentificar qual botão, verificando se tem parent e o tipo de layout q o parent tem.

Eu fiz isso e foi retornado isso:
`

=Checando botão
Classe: JButton
Texto: Enviar senha
true
Layout do parent: FlowLayout
=Fim
=Checando botão
Classe: XPComboBoxButton
Texto: 
true
Exception in thread "main" java.lang.NullPointerException
at LookAndFeel.TKFLookAndFeel.formatar(TKFLookAndFeel.java:147)
at Main.Login.format2(Login.java:324)
at Main.Login.<init>(Login.java:98)
at Main.Login.main(Login.java:162)

`

O XPComboBoxButton é uma classe interna do java, acho q faz referencia ao botão do comboBox.

Recomendo q altere o getAllComponents pois todas as classes do java swing são containers.

            if (comp instanceof JPanel || comp instanceof Window){
                compList.addAll(getAllComponents((Container) comp));
            }

Se não funcionar então no formatar apos for(Component component:list){

if (component.getParent() == null || component.getParent().getLayout() == null) {
    continue;
}

E se mesmo assim não funcionar, então no formatar apos for(Component component:list){

if (component instanceof XPComboBoxButton) {
    continue;
}

Olá, eu testei os dois primeiros, nenhuma exceção foi lançada porém a interface não é formatada(antes era) e sobre a terceira você sabe em que pacote fica esta xpcomboboxbutton pois o netbeans acusou erro e não deu nenhuma sugestão de importação então eu quero importar para ver se funciona.

troca getSimpleName() por getName()

Eu fiz e foi retornado isso:
`

=Checando botão
Classe: javax.swing.JButton
Texto: Enviar senha
true
Layout do parent: FlowLayout
=Fim
=Checando botão
Classe: com.sun.java.swing.plaf.windows.WindowsComboBoxUI$XPComboBoxButton
Texto: 
true
Exception in thread "main" java.lang.NullPointerException
at LookAndFeel.TKFLookAndFeel.formatar(TKFLookAndFeel.java:147)
at Main.Login.format2(Login.java:324)
at Main.Login.<init>(Login.java:98)
at Main.Login.main(Login.java:162)

`

Eu fiz um teste com o codigo q vc postou e consegui fazer funcionar alterando somente o getAllComponents

    public static List<Component> getAllComponents(final Container c) {
        Component[] comps = c.getComponents();
        List<Component> compList = new ArrayList<Component>();
        for (Component comp : comps) {
            compList.add(comp);
            if (comp instanceof JPanel || comp instanceof JRootPane || comp instanceof JLayeredPane) {
                compList.addAll(getAllComponents((Container) comp));
            }
        }
        return compList;
    }
1 curtida

Muito obrigado, agora funcionou :slight_smile:

Olá, desculpe voltar depois do tópico já estar resolvido, é que agora que eu notei que o JScrollPane desta classe não está sendo formatado, você sabe porque?

O JScrollPane é diferente

Se vc se refere ao conteudo interno:

        if (comp instanceof JPanel || comp instanceof JRootPane || comp instanceof JLayeredPane) {
            compList.addAll(getAllComponents((Container) comp));
        } else if (comp instanceof JScrollPane) {
            comp = ((JScrollPane) comp).getViewport().getView(); // obtem o conteudo do scrollpane
            compList.add(getAllComponents((Container) comp));
        }

Só que o netbeans está acusando erro nessa linha:

Ele pede para converter o getallcomponents em component com um cast e se eu adicionar o cast essa exceção é lençada:
`

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to  java.awt.Component
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:113)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.formatar(TKFLookAndFeel.java:146)
at Main.Login.format2(Login.java:315)
at Main.Login.<init>(Login.java:88)
at Main.Login.main(Login.java:151)

`
Obs: A linha de código com problema é a 113

Só que o netbeans está acusando erro nessa linha:

Ele pede para converter o getallcomponents em component com um cast e se eu adicionar o cast essa exceção é lençada:
`

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to  java.awt.Component
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:113)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.getAllComponents(TKFLookAndFeel.java:110)
at LookAndFeel.TKFLookAndFeel.formatar(TKFLookAndFeel.java:146)
at Main.Login.format2(Login.java:315)
at Main.Login.<init>(Login.java:88)
at Main.Login.main(Login.java:151)

`
Obs: A linha de código com problema é a 113

compList.addAll(getAllComponents((Container) comp));
1 curtida