Hallo. Ich hab ein JLabel, welches automatisch einen Zeilenumbruch implementieren soll. Ich habe dazu folgendes gefunden:
forums.sun.com/thread.jspa?threadID=623043&tstart=32519
Das besagte Programm funktioniert auch ohne Probleme. Wenn ich es aber in meinen Chat integrieren will, funktioniert es nicht mehr. Ich verwende die Klasse wie folgt:
PS: Die Klasse TextWrapper entspricht dem in der oberen Seite angegeben "class SizeTestLabel extends JLabel", lediglich der Konstruktor wurde abgeändert (Text wird nicht am Anfang festgelegt), was aber eigendlich keine Probleme verursachen sollte.
Dabei tritt immer folgende Exception auf:
forums.sun.com/thread.jspa?threadID=623043&tstart=32519
Das besagte Programm funktioniert auch ohne Probleme. Wenn ich es aber in meinen Chat integrieren will, funktioniert es nicht mehr. Ich verwende die Klasse wie folgt:
PS: Die Klasse TextWrapper entspricht dem in der oberen Seite angegeben "class SizeTestLabel extends JLabel", lediglich der Konstruktor wurde abgeändert (Text wird nicht am Anfang festgelegt), was aber eigendlich keine Probleme verursachen sollte.
Code:
/**
* The Class MyListRenderer.
*/
class MyListRenderer extends TextWrapper implements ListCellRenderer {
public MyListRenderer() {
super();
setOpaque(true);
}
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -6477398272501139124L;
/*
* (non-Javadoc)
*
* @see
* javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing
* .JList, java.lang.Object, int, boolean, boolean)
*/
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setSize(0, 25);
changeText("<html>" + value.toString() + "</html>");
try {
if (!((ClientTextListObject) value).isHeader()) {
setBackground(isSelected ? Color.blue : Color.white);
setForeground(isSelected ? Color.white : Color.black);
} else {
setBackground(isSelected ? Color.blue : Color.lightGray);
setForeground(isSelected ? Color.white : Color.red);
}
} catch (ClassCastException ex) {
setBackground(isSelected ? Color.blue : Color.white);
setForeground(isSelected ? Color.white : Color.black);
}
return this;
}
}
Dabei tritt immer folgende Exception auf:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at arm.chat.TextWrapper.findFontSize(TextWrapper.java:61)
at arm.chat.TextWrapper.changeText(TextWrapper.java:82)
at arm.chat.client.TextPanel$MyListRenderer.getListCellRendererComponent(TextPanel.java:69)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1349)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1299)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:566)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1632)
at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:769)
at java.awt.Container.layout(Container.java:1398)
at java.awt.Container.doLayout(Container.java:1387)
at java.awt.Container.validateTree(Container.java:1485)
at java.awt.Container.validate(Container.java:1457)
at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:670)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:127)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)