
|
If you were logged in you would be able to see more operations.
|
|
|
|
Issue Links:
|
Duplicate
|
|
|
|
This issue is duplicated by:
|
|
UBA-7594
Using EaSynthLookAndFeel with ULCTableTree with Java 6 u 10 results in NPE
|
|
|
|
|
|
|
For ULCTableTree, on the client side, TableTreeTree.getTableCellOffset should check for null when accessing
DefaultTreeCellRenderer.getLeafIcon() / getOpenIcon() / getClosedIcon()
The following snippet demonstrates the error:
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCTableTree;
import com.ulcjava.base.application.tabletree.DefaultMutableTableTreeNode;
import com.ulcjava.base.application.tabletree.DefaultTableTreeModel;
import com.ulcjava.base.development.DevelopmentRunner;
public class ULCTableTreeTest extends AbstractApplication {
public void start() {
DefaultMutableTableTreeNode root = new DefaultMutableTableTreeNode(
new Object[] { "node", "abs", "per" }, false);
DefaultMutableTableTreeNode node1 = new DefaultMutableTableTreeNode(
new Object[] { "node1", "total",
"total % " }, true);
DefaultMutableTableTreeNode node2 = new DefaultMutableTableTreeNode(
new Object[] { "AAAA", "13605", "16.84" }, false);
DefaultMutableTableTreeNode node3 = new DefaultMutableTableTreeNode(
new Object[] { "BBBBB", "xx", "yy" }, true);
DefaultMutableTableTreeNode node4 = new DefaultMutableTableTreeNode(
new Object[] { "CCCC", "11", "0.01" }, false);
DefaultMutableTableTreeNode node5= new DefaultMutableTableTreeNode(
new Object[] { "DDDD", "zz", "vv" }, true);
node1.add(node2);
node4.add(node5);
root.add(node1);
root.add(node3);
root.add(node4);
DefaultTableTreeModel model = new DefaultTableTreeModel(root,
new String[] { "col1", "col2", "col3" });
model.setRoot(root);
ULCTableTree tree = new ULCTableTree(model);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.setTableTreeHeader(null);
ULCFrame frame = new ULCFrame();
frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
frame.add(new ULCScrollPane(tree));
frame.pack();
frame.setSize(700, 300);
frame.setVisible(true);
}
public static void main(String[] args) {
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.remove("Tree.leafIcon");
DevelopmentRunner.setApplicationClass(ULCTableTreeTest.class);
DevelopmentRunner.run();
}
}
>java.lang.NullPointerException
> at
>com.ulcjava.base.client.tabletree.TableTreeTree.getTableCellOffset(
>TableTreeTree.java:4)
> at
>com.ulcjava.base.client.tabletree.TreeColumnCellRenderer.getTableCe
>llRendererComponent(TreeColumnCellRenderer.java:7)
> at
>com.ubs.swidULF.v2.client.tabletree.UlfTreeColumnCellRenderer.getTa
>bleCellRendererComponent(UlfTreeColumnCellRenderer.java:96)
> at javax.swing.JTable.prepareRenderer(JTable.java:3789)
> at
>com.ubs.swidULF.v2.client.tabletree.UlfTableTreeTable.prepareRender
>er(UlfTableTreeTable.java:52)
> at
>javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1236)
> at
>javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1138)
> at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1061)
> at com.ubs.swidULF.v2.plaf.ulf.UlfTableUI.paint(UlfTableUI.java:65)
> at javax.swing.plaf.ComponentUI.update(ComponentUI.java:174)
> at javax.swing.JComponent.paintComponent(JComponent.java:576)
> at javax.swing.JComponent.paint(JComponent.java:843)
> at
>com.ulcjava.base.client.tabletree.TableTreeTable.paint(TableTreeTab
>le.java:43)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JViewport.paint(JViewport.java:753)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at
>javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4919)
> at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4865)
> at javax.swing.JComponent.paint(JComponent.java:833)
> at
>java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:63)
> at
>sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:93)
> at
>sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:130)
> at java.awt.Container.paint(Container.java:1349)
> at
>java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:54)
> at sun.awt.RepaintArea.paint(RepaintArea.java:216)
> at
>sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:293)
> at java.awt.Component.dispatchEventImpl(Component.java:3774)
> at java.awt.Container.dispatchEventImpl(Container.java:1665)
> at java.awt.Window.dispatchEventImpl(Window.java:1653)
> at java.awt.Component.dispatchEvent(Component.java:3574)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:536)
> at
>com.ulcjava.base.client.FilteringEventQueue.dispatchEvent(Filtering
>EventQueue.java:25)
> at
>java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatch
>Thread.java:237)
> at
>java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchTh
>read.java:187)
> at
>java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:181)
> at
>java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:173)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:136)
>
|
|
Description
|
For ULCTableTree, on the client side, TableTreeTree.getTableCellOffset should check for null when accessing
DefaultTreeCellRenderer.getLeafIcon() / getOpenIcon() / getClosedIcon()
The following snippet demonstrates the error:
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCTableTree;
import com.ulcjava.base.application.tabletree.DefaultMutableTableTreeNode;
import com.ulcjava.base.application.tabletree.DefaultTableTreeModel;
import com.ulcjava.base.development.DevelopmentRunner;
public class ULCTableTreeTest extends AbstractApplication {
public void start() {
DefaultMutableTableTreeNode root = new DefaultMutableTableTreeNode(
new Object[] { "node", "abs", "per" }, false);
DefaultMutableTableTreeNode node1 = new DefaultMutableTableTreeNode(
new Object[] { "node1", "total",
"total % " }, true);
DefaultMutableTableTreeNode node2 = new DefaultMutableTableTreeNode(
new Object[] { "AAAA", "13605", "16.84" }, false);
DefaultMutableTableTreeNode node3 = new DefaultMutableTableTreeNode(
new Object[] { "BBBBB", "xx", "yy" }, true);
DefaultMutableTableTreeNode node4 = new DefaultMutableTableTreeNode(
new Object[] { "CCCC", "11", "0.01" }, false);
DefaultMutableTableTreeNode node5= new DefaultMutableTableTreeNode(
new Object[] { "DDDD", "zz", "vv" }, true);
node1.add(node2);
node4.add(node5);
root.add(node1);
root.add(node3);
root.add(node4);
DefaultTableTreeModel model = new DefaultTableTreeModel(root,
new String[] { "col1", "col2", "col3" });
model.setRoot(root);
ULCTableTree tree = new ULCTableTree(model);
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
tree.setTableTreeHeader(null);
ULCFrame frame = new ULCFrame();
frame.setDefaultCloseOperation(ULCFrame.TERMINATE_ON_CLOSE);
frame.add(new ULCScrollPane(tree));
frame.pack();
frame.setSize(700, 300);
frame.setVisible(true);
}
public static void main(String[] args) {
UIDefaults uiDefaults = UIManager.getDefaults();
uiDefaults.remove("Tree.leafIcon");
DevelopmentRunner.setApplicationClass(ULCTableTreeTest.class);
DevelopmentRunner.run();
}
}
>java.lang.NullPointerException
> at
>com.ulcjava.base.client.tabletree.TableTreeTree.getTableCellOffset(
>TableTreeTree.java:4)
> at
>com.ulcjava.base.client.tabletree.TreeColumnCellRenderer.getTableCe
>llRendererComponent(TreeColumnCellRenderer.java:7)
> at
>com.ubs.swidULF.v2.client.tabletree.UlfTreeColumnCellRenderer.getTa
>bleCellRendererComponent(UlfTreeColumnCellRenderer.java:96)
> at javax.swing.JTable.prepareRenderer(JTable.java:3789)
> at
>com.ubs.swidULF.v2.client.tabletree.UlfTableTreeTable.prepareRender
>er(UlfTableTreeTable.java:52)
> at
>javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1236)
> at
>javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1138)
> at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1061)
> at com.ubs.swidULF.v2.plaf.ulf.UlfTableUI.paint(UlfTableUI.java:65)
> at javax.swing.plaf.ComponentUI.update(ComponentUI.java:174)
> at javax.swing.JComponent.paintComponent(JComponent.java:576)
> at javax.swing.JComponent.paint(JComponent.java:843)
> at
>com.ulcjava.base.client.tabletree.TableTreeTable.paint(TableTreeTab
>le.java:43)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JViewport.paint(JViewport.java:753)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at javax.swing.JComponent.paint(JComponent.java:852)
> at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
> at javax.swing.JComponent.paintChildren(JComponent.java:682)
> at
>javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4919)
> at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4865)
> at javax.swing.JComponent.paint(JComponent.java:833)
> at
>java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:63)
> at
>sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:93)
> at
>sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:130)
> at java.awt.Container.paint(Container.java:1349)
> at
>java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:54)
> at sun.awt.RepaintArea.paint(RepaintArea.java:216)
> at
>sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:293)
> at java.awt.Component.dispatchEventImpl(Component.java:3774)
> at java.awt.Container.dispatchEventImpl(Container.java:1665)
> at java.awt.Window.dispatchEventImpl(Window.java:1653)
> at java.awt.Component.dispatchEvent(Component.java:3574)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:536)
> at
>com.ulcjava.base.client.FilteringEventQueue.dispatchEvent(Filtering
>EventQueue.java:25)
> at
>java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatch
>Thread.java:237)
> at
>java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchTh
>read.java:187)
> at
>java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:181)
> at
>java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:173)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:136)
>
|
Show » |
|
TableTreeTree.getTableCellOffset should check if renderer component has an icon or not before computing the width.