-
Bug
-
Resolution: Duplicate
-
P1
-
None
-
1.1.5, 1.2.0
-
None
-
x86, sparc
-
solaris_2.5.1, windows_95
I have a simple program that should print a JFrame that contains a JScrollPane. I'd like to print the whole thing, but when I try to do so, I get the following exception:
Exception occurred during event dispatching:
java.lang.NullPointerException
at java.awt.Rectangle.intersects(Rectangle.java:383)
at java.awt.Container.print(Container.java:769)
at sun.awt.motif.MComponentPeer.print(MComponentPeer.java:172)
at sun.awt.motif.MPanelPeer.print(MPanelPeer.java:41)
at sun.awt.motif.MFramePeer.print(MFramePeer.java:174)
at java.awt.Component.printAll(Component.java:1395)
at ScrollerTest.print(ScrollerTest.java:85)
at QWSTKey.keyPressed(ScrollerTest.java:109)
at java.awt.Component.processKeyEvent(Component.java:2247)
at com.sun.java.swing.JFrame.processKeyEvent(JFrame.java:106)
at java.awt.Component.processEvent(Component.java:2138)
at java.awt.Container.processEvent(Container.java:894)
at java.awt.Window.processEvent(Window.java:315)
at java.awt.Component.dispatchEventImpl(Component.java:1764)
at java.awt.Container.dispatchEventImpl(Container.java:939)
at java.awt.Window.dispatchEventImpl(Window.java:443)
at java.awt.Component.dispatchEvent(Component.java:1704)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:63)
^
Here's the program
File 1
// ScrollerTest.java
/**
* <B>ScrollerTest</B> is a simple class that has a main. Used to test things.
* in libraries;
*
* @version $Id$
*
*
*/
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.PrintJob;
import java.awt.event.InputEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import com.sun.java.swing.JFrame;
import com.sun.apps.frameworks.foundation.LFAssert;
import ScrollPanePanel;
import com.sun.java.swing.UIManager;
public class ScrollerTest
extends
Container
{
//
// Protected Constants
//
static protected int WIDTH = 500;
static protected int HEIGHT = 400;
static protected String TITLE = "ScrollerTest";
//
// Class Variables
//
//
// Instance Variables
//
static protected JFrame frame = null;
//
// General Methods
//
static public void main(String args[])
{
LFAssert.setEnabled(true);
frame = new JFrame(ScrollerTest.TITLE);
frame.setForeground(Color.lightGray);
Dimension screenSize, initialSize = new Dimension(WIDTH, HEIGHT);
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(initialSize);
frame.setLocation(screenSize.width/2 - initialSize.width/2,
screenSize.height/2 - initialSize.height/2);
frame.getContentPane().add(new ScrollPanePanel());
frame.addKeyListener(new QWSTKey());
frame.show();
}
static public void print()
{
PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(frame,
"ScrollerTest",
null);
Graphics pg = pj.getGraphics();
frame.printAll(pg);
return;
}
} // end of class ScrollerTest
class QWSTKey extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_ENTER:
break;
case KeyEvent.VK_BACK_SPACE:
// delete selection;
break;
case KeyEvent.VK_DELETE:
// delete selection;
break;
case KeyEvent.VK_TAB:
ScrollerTest.print();
break;
case KeyEvent.VK_LEFT:
break;
case KeyEvent.VK_RIGHT:
break;
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_DOWN:
break;
case KeyEvent.VK_ALT:
case KeyEvent.VK_CAPS_LOCK:
case KeyEvent.VK_CONTROL:
case KeyEvent.VK_META:
case KeyEvent.VK_SHIFT:
// a modifier key: ignore it
break;
case KeyEvent.VK_UNDEFINED:
break;
default:
break;
}
}
} // end of class QWSTKey
File 2
import com.sun.java.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
* @version 1.12 10/06/97
* @author Jeff Dinkins
*/
public class ScrollPanePanel extends JPanel {
public ScrollPanePanel() {
setLayout(new BorderLayout());
add("Center", new TigerScrollPane());
}
}
class TigerScrollPane extends JScrollPane {
private JLabel makeLabel(String name, String description) {
String filename = "images/" + name;
ImageIcon image = new ImageIcon(filename, description);
return new JLabel(image);
}
public TigerScrollPane() {
super();
JLabel horizontalRule = makeLabel("scrollpane/header.gif", "Horizontal ruler carved out of stone");
JLabel verticalRule = makeLabel("scrollpane/column.gif", "Vertical ruler carved out of stone");
JLabel tiger = makeLabel("BigTiger.gif","A rather fierce looking tiger");
JLabel cornerLL = makeLabel("scrollpane/corner.gif","Square chunk of stone (lower left)");
JLabel cornerLR = makeLabel("scrollpane/corner.gif","Square chunk of stone (lower right)");
JLabel cornerUL = makeLabel("scrollpane/corner.gif","Square chunk of stone (upper left)");
JLabel cornerUR = makeLabel("scrollpane/corner.gif","Square chunk of stone (upper right)");
setViewportView(tiger);
setRowHeaderView(verticalRule);
setColumnHeaderView(horizontalRule);
setCorner(LOWER_LEFT_CORNER, cornerLL);
setCorner(LOWER_RIGHT_CORNER, cornerLR);
setCorner(UPPER_LEFT_CORNER, cornerUL);
setCorner(UPPER_RIGHT_CORNER, cornerUR);
}
public Dimension getMinimumSize() {
return new Dimension(25, 25);
}
public boolean isOpaque() {
return true;
}
}
In addition, you need to have the following hierarchy in the same directory as the compiled .class files
./images:
BigTiger.gif scrollpane
./images/scrollpane:
01.gif 02s.gif 04.gif 05s.gif column.gif main.gif
01s.gif 03.gif 04s.gif 06.gif corner.gif
02.gif 03s.gif 05.gif 06s.gif header.gif
For your convenience I have placed all of this at
cd /net/arago.eng/ProjectsLocal/edburns/scratch/bugtraq
To use the program have JDK1.1.5, Swing0.6.1 in your classpath,
java ScrollerTest
Press the <TAB> key to pop up the print dialog. Fill it out, and press
the <PRINT> button.
I was requested to reopen this bug and I have done so.
ed.burns@Eng 1998-03-18
Exception occurred during event dispatching:
java.lang.NullPointerException
at java.awt.Rectangle.intersects(Rectangle.java:383)
at java.awt.Container.print(Container.java:769)
at sun.awt.motif.MComponentPeer.print(MComponentPeer.java:172)
at sun.awt.motif.MPanelPeer.print(MPanelPeer.java:41)
at sun.awt.motif.MFramePeer.print(MFramePeer.java:174)
at java.awt.Component.printAll(Component.java:1395)
at ScrollerTest.print(ScrollerTest.java:85)
at QWSTKey.keyPressed(ScrollerTest.java:109)
at java.awt.Component.processKeyEvent(Component.java:2247)
at com.sun.java.swing.JFrame.processKeyEvent(JFrame.java:106)
at java.awt.Component.processEvent(Component.java:2138)
at java.awt.Container.processEvent(Container.java:894)
at java.awt.Window.processEvent(Window.java:315)
at java.awt.Component.dispatchEventImpl(Component.java:1764)
at java.awt.Container.dispatchEventImpl(Container.java:939)
at java.awt.Window.dispatchEventImpl(Window.java:443)
at java.awt.Component.dispatchEvent(Component.java:1704)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:63)
^
Here's the program
File 1
// ScrollerTest.java
/**
* <B>ScrollerTest</B> is a simple class that has a main. Used to test things.
* in libraries;
*
* @version $Id$
*
*
*/
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.PrintJob;
import java.awt.event.InputEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import com.sun.java.swing.JFrame;
import com.sun.apps.frameworks.foundation.LFAssert;
import ScrollPanePanel;
import com.sun.java.swing.UIManager;
public class ScrollerTest
extends
Container
{
//
// Protected Constants
//
static protected int WIDTH = 500;
static protected int HEIGHT = 400;
static protected String TITLE = "ScrollerTest";
//
// Class Variables
//
//
// Instance Variables
//
static protected JFrame frame = null;
//
// General Methods
//
static public void main(String args[])
{
LFAssert.setEnabled(true);
frame = new JFrame(ScrollerTest.TITLE);
frame.setForeground(Color.lightGray);
Dimension screenSize, initialSize = new Dimension(WIDTH, HEIGHT);
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(initialSize);
frame.setLocation(screenSize.width/2 - initialSize.width/2,
screenSize.height/2 - initialSize.height/2);
frame.getContentPane().add(new ScrollPanePanel());
frame.addKeyListener(new QWSTKey());
frame.show();
}
static public void print()
{
PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(frame,
"ScrollerTest",
null);
Graphics pg = pj.getGraphics();
frame.printAll(pg);
return;
}
} // end of class ScrollerTest
class QWSTKey extends KeyAdapter
{
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_ENTER:
break;
case KeyEvent.VK_BACK_SPACE:
// delete selection;
break;
case KeyEvent.VK_DELETE:
// delete selection;
break;
case KeyEvent.VK_TAB:
ScrollerTest.print();
break;
case KeyEvent.VK_LEFT:
break;
case KeyEvent.VK_RIGHT:
break;
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_DOWN:
break;
case KeyEvent.VK_ALT:
case KeyEvent.VK_CAPS_LOCK:
case KeyEvent.VK_CONTROL:
case KeyEvent.VK_META:
case KeyEvent.VK_SHIFT:
// a modifier key: ignore it
break;
case KeyEvent.VK_UNDEFINED:
break;
default:
break;
}
}
} // end of class QWSTKey
File 2
import com.sun.java.swing.*;
import java.awt.*;
import java.awt.event.*;
/*
* @version 1.12 10/06/97
* @author Jeff Dinkins
*/
public class ScrollPanePanel extends JPanel {
public ScrollPanePanel() {
setLayout(new BorderLayout());
add("Center", new TigerScrollPane());
}
}
class TigerScrollPane extends JScrollPane {
private JLabel makeLabel(String name, String description) {
String filename = "images/" + name;
ImageIcon image = new ImageIcon(filename, description);
return new JLabel(image);
}
public TigerScrollPane() {
super();
JLabel horizontalRule = makeLabel("scrollpane/header.gif", "Horizontal ruler carved out of stone");
JLabel verticalRule = makeLabel("scrollpane/column.gif", "Vertical ruler carved out of stone");
JLabel tiger = makeLabel("BigTiger.gif","A rather fierce looking tiger");
JLabel cornerLL = makeLabel("scrollpane/corner.gif","Square chunk of stone (lower left)");
JLabel cornerLR = makeLabel("scrollpane/corner.gif","Square chunk of stone (lower right)");
JLabel cornerUL = makeLabel("scrollpane/corner.gif","Square chunk of stone (upper left)");
JLabel cornerUR = makeLabel("scrollpane/corner.gif","Square chunk of stone (upper right)");
setViewportView(tiger);
setRowHeaderView(verticalRule);
setColumnHeaderView(horizontalRule);
setCorner(LOWER_LEFT_CORNER, cornerLL);
setCorner(LOWER_RIGHT_CORNER, cornerLR);
setCorner(UPPER_LEFT_CORNER, cornerUL);
setCorner(UPPER_RIGHT_CORNER, cornerUR);
}
public Dimension getMinimumSize() {
return new Dimension(25, 25);
}
public boolean isOpaque() {
return true;
}
}
In addition, you need to have the following hierarchy in the same directory as the compiled .class files
./images:
BigTiger.gif scrollpane
./images/scrollpane:
01.gif 02s.gif 04.gif 05s.gif column.gif main.gif
01s.gif 03.gif 04s.gif 06.gif corner.gif
02.gif 03s.gif 05.gif 06s.gif header.gif
For your convenience I have placed all of this at
cd /net/arago.eng/ProjectsLocal/edburns/scratch/bugtraq
To use the program have JDK1.1.5, Swing0.6.1 in your classpath,
java ScrollerTest
Press the <TAB> key to pop up the print dialog. Fill it out, and press
the <PRINT> button.
I was requested to reopen this bug and I have done so.
ed.burns@Eng 1998-03-18
- duplicates
-
JDK-4111262 Print doesn't work for lightweight components
-
- Closed
-