Erro java.lang.NullPointerException ao utilizar WindowsFileChooserUI

Estou tentando fazer um pequeno editor de texto que carrega um arquivo e para isso tava tentando utilizar o WindowsFileChooser mas estou tendo esse erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.sun.java.swing.plaf.windows.WindowsFileChooserUI.installComponents(WindowsFileChooserUI.java:305) at javax.swing.plaf.basic.BasicFileChooserUI.installUI(BasicFileChooserUI.java:173) at com.sun.java.swing.plaf.windows.WindowsFileChooserUI.installUI(WindowsFileChooserUI.java:149) at controller.Janela.actionPerformed(Janela.java:46) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6533) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Aqui esta o meu código completo:

[code]package controller;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.sun.java.swing.plaf.windows.WindowsFileChooserUI;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Janela extends JFrame implements ActionListener{
JTextArea texto;
public Janela() {
super(“Editor de Texto”);
texto = new JTextArea();
JScrollPane scroll = new JScrollPane(texto);
texto.setFont(new Font(“Serif”, Font.PLAIN, 26));

	JButton botao = new JButton("Abrir arquivo");	
	botao.setFont(new Font("Serif", Font.PLAIN, 26));
	botao.addActionListener(this);
	Container c = getContentPane();
	c.add(BorderLayout.CENTER,scroll);
	c.add(BorderLayout.SOUTH, botao);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(500, 300);
	setVisible(true);
	
}
public static void main(String[] args) {
	new Janela();
}
@Override
public void actionPerformed(ActionEvent e) {
	JFileChooser c = new JFileChooser();
	WindowsFileChooserUI wui = new WindowsFileChooserUI(c);
            wui.installUI(c);
	c.showOpenDialog(this);		
	File file = c.getSelectedFile();
	try{
		Path path = Paths.get(file.getAbsolutePath());
		String retorno = new String(Files.readAllBytes(path));
		texto.setText(retorno);
	}catch(Exception erro){
		JOptionPane.showMessageDialog(this, "Erro ao abrir arquivo");
		
	}
}

}
[/code]

Apaga essas linhas.

Se você quer usar o Look and Feel do sistema operacional, faça o seguinte, antes de começar a instanciar suas telas (sugiro fazer no método main)

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

1 curtida

Muito obrigado Consegui resolver meu problema :))

1 curtida