# sHotEqn --> LaTeX-Code darstellen



## r74 (7. Nov 2009)

Hallo Forum

Auf dieser Website habe ich eine Komponente gefunden, mit der LaTeX-Code via Java dargestellt werden kann. Ich versuche diese Komponente in ein eigenes Projekt einzubauen.
An der markierten Stellen erscheint eine NullPointerException. Leider dokumentiert die Website die Methoden für mich zu wenig ausführlich. Hat jemand sHotEqn schon mal verwendet? Kann mir jemand weiter helfen?

[Java=1]
import atp.sHotEqn;
import javax.swing.*;

public class Main {

	public static void main(String [] args) {
		sHotEqn e = new sHotEqn("\frac{1}{x+y}");		
		JFrame f = new JFrame();
		JLabel l = new JLabel(new ImageIcon(e.getImage())); //<------ NullPointerException
		f.add(l);
		f.setVisible(true);
	}
}[/Java]

PS: Verwende Java 1.5 (Mac)

Vielen Dank.


----------



## musiKk (7. Nov 2009)

Probier mal [c]\\frac ...[/c]. \f ist eine spezielle escape sequence (form feed) und die bringt diese Bibliothek vielleicht durcheinander.


----------



## r74 (7. Nov 2009)

@musiKk: An dem liegts nicht. Ich kann im LaTeX-String auch bloss "2" schreiben. Die NullPointerException tritt auch auf.


----------



## faetzminator (7. Nov 2009)

mach mal zuerst [c].setDebug(true)[/c] und lass dir nachher alle Getter ausgeben.


----------



## r74 (7. Nov 2009)

@faetzminator: Dann passiert das folgende:
[JAVA=3]
import atp.sHotEqn;
import javax.swing.*;

public class Main {

	public static void main(String [] args) {
		sHotEqn e = new sHotEqn("\\frac{1}{x+y}");
		e.setDebug(true);
		System.out.println("1: "+e.getEquation());
		System.out.println("2: "+e.getFontname());
		System.out.println("3: "+e.getHAlign());
		System.out.println("4: "+e.getSelectedArea());
		System.out.println("5: "+e.getVAlign());
		System.out.println("6: "+e.getBackground());
		System.out.println("7: "+e.getBorderColor());
		System.out.println("8: "+e.getEnvColor());
		System.out.println("9: "+e.getForeground());
		System.out.println("10: "+e.getImage());
		System.out.println("11: "+e.isBorder());
		System.out.println("12: "+e.isDebug());
		System.out.println("13: "+e.isEditable());
		System.out.println("14: "+e.isRoundRectBorder());
		System.out.println("15: "+e.getMinimumSize());
		System.out.println("16: "+e.getPreferredSize());
		JFrame f = new JFrame();
		JLabel l = new JLabel(new ImageIcon(e.getImage()));
		f.add(l);
		f.setVisible(true);
	}
}
[/code]

Ausgabe:

1: \frac{1}{x+y}
2: Helvetica
3: left
4: \frac
5: top
6: java.awt.Color[r=255,g=255,b=255]
7: java.awt.Color[r=255,g=0,b=0]
8: java.awt.Color[r=255,g=255,b=255]
9: java.awt.Color[r=0,g=0,b=0]
10: null
11: false
12: true
13: true
14: false
15: java.awt.Dimension[width=100,height=100]
16: java.awt.Dimension[width=100,height=100]
Exception in thread "main" java.lang.NullPointerException
	at javax.swing.ImageIcon.<init>(ImageIcon.java:161)
	at Main.main(Main.java:29)


----------



## faetzminator (7. Nov 2009)

hmm, komisch. Aber ich sehe gerade, dass es ein JComponent ist. Versuch ihn doch gleich an Stelle des JLabels auf den höherliegenden JComponent zu adden.


----------



## r74 (7. Nov 2009)

Also


```
f.add(e.getImage());
```

klappt nicht:
The method add(Component) in the type Container is not applicable for the arguments (Image)


----------



## faetzminator (7. Nov 2009)

sHotEqn ist ein JComponent, also [c].add(e)[/c]


----------



## r74 (7. Nov 2009)

Es klappt. Danke dir tausendmal!


----------

