Swing und die NullPointerException

Status
Nicht offen für weitere Antworten.

grisumail

Neues Mitglied
Hi!

Versuche mich gerade mal an Swing. Leider habe ich zwar ein lauffähiges Programm, doch wirft mir Eclipse beim speichern (also kompilieren) immer folgende Meldung aus:

Exception in thread "main" java.lang.NullPointerException
at java.awt.Dimension.<init>(Unknown Source)
at javax.swing.plaf.basic.BasicProgressBarUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at SimpleFileCopyApp.main(SimpleFileCopyApp.java:192)

Wenn ich die Fehlermeldung richtig verstehe, dann kann es nicht die Dimension (Größe) der ProgressBar ermitteln. Weiss leider aber nicht mehr weiter, deshalb poste ich mal mein Programm. Vielleicht kann mir jemand erklären, wie ich weiterkommen kann, da ich die ProgressBar in Eclipse einfach auf den JContentPane gezogen habe und deshalb nicht weiss, weshalb es jetzt die Probleme gibt.
Dass ich ein GridBagLayout verwendet habe, lag eher daran, dass ich dieses Layout ausprobieren wollte.

Code:
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.io.File;

import javax.swing.JProgressBar;
import javax.swing.JButton;

public class SimpleFileCopyApp extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2642433080877673624L;
	private JPanel jContentPane = null;
	private JProgressBar jProgressBar = null;
	private JButton jButton = null;
	//Source and Destination File
	private File scrFile = null, dstFile = null;
	static SimpleFileCopy mycopy;
	/**
	 * This method initializes jProgressBar	
	 * 	
	 * @return javax.swing.JProgressBar	
	 */
	private JProgressBar getJProgressBar() {
		if (jProgressBar == null) {
			jProgressBar = new JProgressBar();
			jProgressBar.setStringPainted(true);
			jProgressBar.setString(" ");
		}
		return jProgressBar;
	}
	
	/**
	 * Öffnet eine Datei mit dem Dialog JFileChooser
	 * @return Referenz der geöffneten Datei
	 */
	private File openFile(){
		//Create a file chooser
		final JFileChooser fc = new JFileChooser();
		
		//In response to a button click:
		int returnVal = fc.showOpenDialog(jContentPane);
		if (returnVal == JFileChooser.APPROVE_OPTION) {
			File scrFile = fc.getSelectedFile();
			//System.out.println("Source File Path:" + scrFile.getPath());
			if(scrFile.exists()){
				return scrFile;
			} else {
				JOptionPane.showMessageDialog(jContentPane,
					    "Error: The selected file not exists",
					    "Selection error",
					    JOptionPane.ERROR_MESSAGE);
			}
		}
		if (returnVal == JFileChooser.CANCEL_OPTION) {
			JOptionPane.showMessageDialog(jContentPane,
			"No file was selected");
			//System.out.println("Keine Datei ausgewählt");
		}
		return null;
	}

	/**
	 * This method initializes jButton	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("Select a file to copy");
			jButton.setToolTipText("Select a file, which the programm should copy");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					/*
					 * ProgressBar in Aktion setzen
					 */
					jProgressBar.setString("Copying");
					jProgressBar.setIndeterminate(true);
					
					/*
					 * lokale Methode zum Kopieren, die dann das
					 * wirkliche kopieren aufruft 
					 */
					copyFile();
					
					/* 
					 * ProgressBar aus Aktion (Interminate)
					 * zuruecksetzen 
					 */
					jProgressBar.setIndeterminate(false);
					jProgressBar.setString(" ");
								
				}});
		}
		return jButton;
	}

	/**
	 * lokale Methode zum Kopieren, die dann das
	 * wirkliche kopieren (fileCopyFileChannel) aufruft
	 * @param scrFile Ursprungdatei
	 * @param dstFile Zieldatei
	 */
	public void copyFile() {
		// Ursprungsdatei öffnen
		scrFile = openFile();
		// Weitere Überprüfung, ob Methode openFile erfolgreich
		if (scrFile != null){
			//System.out.println("Source File not null");
			/* Erzeugt eine neue Datei mit dem Pfad des Scoure Files
			 * und angehängtem '.copy'
			 */
			dstFile = new File(scrFile.getPath() + ".copy");
			if (!dstFile.exists()){
				//System.out.println("Destination File" + dstFile.getPath());
				
				if (mycopy.fileCopyFileChannel(scrFile, dstFile)){
					//jProgressBar.setValue(100);			
					JOptionPane.showMessageDialog(jButton,
				    "Success: The file was copied!");
					//jProgressBar.setValue(0);
				} else {
					JOptionPane.showMessageDialog(jContentPane,
						    "Error: Can't copy the file",
						    "Copy error",
						    JOptionPane.ERROR_MESSAGE);
				}
			} else {
				//System.out.println("Destination File existes:" + dstFile.getPath());
				JOptionPane.showMessageDialog(jButton,
					    "Error: The destination file already exists. No Copy!",
					    "Selection error",
					    JOptionPane.ERROR_MESSAGE);
			}
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//String WINDOWS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
		try {
			UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
			JFrame.setDefaultLookAndFeelDecorated(true); 
			//UIManager.setLookAndFeel(WINDOWS);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		SimpleFileCopyApp myapp = new SimpleFileCopyApp();
		mycopy = new SimpleFileCopy();
		
		myapp.setLocationRelativeTo(null);
		myapp.setDefaultCloseOperation(EXIT_ON_CLOSE);
		myapp.setVisible(true);
		
		
	}

	/**
	 * This is the default constructor
	 */
	public SimpleFileCopyApp() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		
		this.setSize(300, 200);
		this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
		this.setContentPane(getJContentPane());
		this.setTitle("Simple File Copy Application");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.gridx = 0;
			gridBagConstraints1.insets = new java.awt.Insets(2,2,2,2);
			gridBagConstraints1.weightx = 1.0D;
			gridBagConstraints1.weighty = 1.0D;
			gridBagConstraints1.gridy = 0;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.gridx = 0;
			gridBagConstraints.insets = new java.awt.Insets(2,2,2,2);
			gridBagConstraints.weightx = 1.0D;
			gridBagConstraints.weighty = 1.0D;
			gridBagConstraints.gridy = 1;
			jContentPane = new JPanel();
			jContentPane.setLayout(new GridBagLayout());
			jContentPane.add(getJButton(), gridBagConstraints);
			jContentPane.add(getJProgressBar(), gridBagConstraints1);
		}
		return jContentPane;
	}

}

Auch so, zur Erklärung des Programms. Das Programm soll einen JFrame öffnen, der eine ProgressBar und einen Button enthält. Mit dem Button öffne ich einen FileChooser, um eine Datei auszuwählen, die ich kopieren möchte.

Eine zweite Frage habe ich auch noch: Das Kopieren der Datei wird mit einem FileChannel durchgeführt. Leider ist mir aufgefallen, dass das Kopieren von kleinen Dateien (<200MB) ohne Probleme funktioniert, doch bei grossen Dateien (hatte einen Film mit 800MB versucht), bricht der FileChannel mit einer IOException ab.
Gibt es beim FileChannel eine grössen Beschränkung? [/code]
 
B

Beni

Gast
1. Die Exception konnte ich nicht reproduzieren. Was für eine Java-Version verwendest du? Ich habe das mit 1.5_4 ausprobiert.

2. Was für eine Exception? Poste mindestens die Message der Exception.
Wie sieht der Code aus, mit dem du den Channel öffnest?
 

grisumail

Neues Mitglied
Also ich benutze Java 1.5 Update 6 und Eclipse 3.1.2. Das kann auch nur ein Problem von Eclipse sein, weil schon das Fenster vom Vidsual Editor einen Fehler anzeigt. Das Programm läuft ja auch ohne Probleme.


Zur zweiten Frage: Er gibt mir bei grossen Dateien folgende Exception aus.

IOException: C:\Downloads\Raw.avi
java.io.IOException: Für diesen Befehl ist nicht genügend Speicher verfügbar
at sun.nio.ch.FileChannelImpl.map0(Native Method)
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFromFileChannel(Unknown Source)
at sun.nio.ch.FileChannelImpl.transferFrom(Unknown Source)
at SimpleFileCopy.fileCopyFileChannel(SimpleFileCopy.java:31)
at SimpleFileCopyApp.copyFile(SimpleFileCopyApp.java:126)
at SimpleFileCopyApp$1.actionPerformed(SimpleFileCopyApp.java:93)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(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)

Ich finde dies auch sehr ungegewöhnlich, dass zuwenig Speicher da sein soll. Und genügend Festplatten Platz habe ich auch.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
G Maven Swing: Wie verwende ich WindowListener ? Java Basics - Anfänger-Themen 2
C Threads und Swing Java Basics - Anfänger-Themen 9
A Swing: Raumshiff Java Basics - Anfänger-Themen 3
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
O ImageIcon, Swing Java Basics - Anfänger-Themen 1
O Swing JPanel Java Basics - Anfänger-Themen 4
F Swing - Fehler - Paint Methode Java Basics - Anfänger-Themen 7
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
mobaer Swing Timer stoppen Java Basics - Anfänger-Themen 3
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M SpielMenü mit Swing Java Basics - Anfänger-Themen 3
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
C Der Swing Layout-Manager hasst mich Java Basics - Anfänger-Themen 4
M Java swing im Browser starten Java Basics - Anfänger-Themen 0
M JavaFX in Swing-Applikationen einbetten Java Basics - Anfänger-Themen 5
Z Threads SWING mit EventQueue.invokeLater Java Basics - Anfänger-Themen 1
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
b1ck Interface Verständnisfrage zum GUI mit "swing" Java Basics - Anfänger-Themen 1
N Erste Schritte Karte in SWING Application Java Basics - Anfänger-Themen 4
D Mehrfacherfassung in Swing GUI Java Basics - Anfänger-Themen 12
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
J Input/Output Charset Swing- Eingaben? Java Basics - Anfänger-Themen 8
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
Q Threads Threads in Swing Anwendungen Java Basics - Anfänger-Themen 5
B Swing intstalliert Eclips{}, mackiert Rot Java Basics - Anfänger-Themen 6
U Java Swing Timer mit ButtonKlick starten u. nach 12 Sekunden Befehl ausführen Java Basics - Anfänger-Themen 7
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
B Java Swing "Zeichenfläche" Java Basics - Anfänger-Themen 1
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
P Hintergrundbild in Swing einfügen Java Basics - Anfänger-Themen 3
C Swing frage Java Basics - Anfänger-Themen 8
T Rechenprogramm mit Swing Java Basics - Anfänger-Themen 3
K Swing Darstellungsproblem Java Basics - Anfänger-Themen 11
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
P Swing - Blackscreen Java Basics - Anfänger-Themen 10
Y Random-Objekt und Swing Java Basics - Anfänger-Themen 4
M Klassen Hilfe bei SWING Java Basics - Anfänger-Themen 5
S GUI Problem: Swing Java Basics - Anfänger-Themen 8
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
J Timer - Swing Java Basics - Anfänger-Themen 5
B Erste Schritte Primefaces -> Swing Gui Java Basics - Anfänger-Themen 7
T Swing, SWT oder JavaFX Java Basics - Anfänger-Themen 8
S Programmoberfläche mit Java-Swing - Herangehensweise Java Basics - Anfänger-Themen 20
E Fragen zu paintXXX in Swing Java Basics - Anfänger-Themen 7
D Erste Schritte bash-Befehl mit Swing ausführen Java Basics - Anfänger-Themen 8
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
S Android fuer Swing-Kenner..? Java Basics - Anfänger-Themen 6
J Swing Timer Java Basics - Anfänger-Themen 3
B Seltsamer Fehler in SWING anwendung Java Basics - Anfänger-Themen 2
D GPS Tracker Swing Java Basics - Anfänger-Themen 2
L Erste Schritte Swing oder SWT Paint mit Grafikkarte? Java Basics - Anfänger-Themen 7
B Einstieg in swing GUI Java Basics - Anfänger-Themen 7
S Swing Eingabe Erzwingen Java Basics - Anfänger-Themen 3
S Swing JTable Java Basics - Anfänger-Themen 7
Z Input/Output Programm mit Swing umsetzen Java Basics - Anfänger-Themen 6
K Eclipse wie Swing per Drag und Drop erstellen Java Basics - Anfänger-Themen 2
V Dropdown Button in einer GUI (Java Swing) Java Basics - Anfänger-Themen 12
S Swing, Gridbaglayout Panel in Panel;funzt nicht!! Java Basics - Anfänger-Themen 3
O swing komponenten werden nicht angezeigt Java Basics - Anfänger-Themen 6
S Swing, Panel über Hintergrundbild!! Java Basics - Anfänger-Themen 6
P Im Fenster bleiben (swing) Java Basics - Anfänger-Themen 16
M Einfacher Swing Wizard Java Basics - Anfänger-Themen 3
E Swing FileWrite?? Java Basics - Anfänger-Themen 3
S Umlaute in Swing-GUI Java Basics - Anfänger-Themen 8
K Drop-down Menü (swing) Java Basics - Anfänger-Themen 4
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
S JAVA Swing Eventlistener Java Basics - Anfänger-Themen 11
P Swing - Welche Klasse für ausgeben von Ergebnissen? Java Basics - Anfänger-Themen 3
V Swing Componenten werden auf Mac nicht angezeigt Java Basics - Anfänger-Themen 19
J Überfordert mit Swing Java Basics - Anfänger-Themen 5
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
B Bei Swing weg vom North-West-South-East-Prinzip Java Basics - Anfänger-Themen 2
K Swing Fenster jede sec.neuzeichnen Java Basics - Anfänger-Themen 14
F Werteübergabe in Swing Formularen (gui Builder) Java Basics - Anfänger-Themen 9
L Swing GridBagLayout Java Basics - Anfänger-Themen 3
K Bild als Hintergrund in einem Swing Fenster Java Basics - Anfänger-Themen 21
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
C Swing i.V.m. Threads Java Basics - Anfänger-Themen 2
J XML Viewer for Swing Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
W Zeichnen in Swing Java Basics - Anfänger-Themen 7
G Swing Applikation mit mehreren Klassen Java Basics - Anfänger-Themen 2
C Swing, Buttons Wert zuweisen Java Basics - Anfänger-Themen 3
Luk10 Swing timer und Threads Java Basics - Anfänger-Themen 4
J Java GUI in Swing und das MVC Paradigma Java Basics - Anfänger-Themen 3
M Swing Java Basics - Anfänger-Themen 7
G Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben