📄 jrviewermod.java
字号:
{
newZoom = MAX_ZOOM;
}
setZoomRatio(newZoom);
}//GEN-LAST:event_cmbZoomActionPerformed
/**
*/
private void hyperlinkClicked(MouseEvent evt)
{
JPanel link = (JPanel)evt.getSource();
JRPrintHyperlink element = (JRPrintHyperlink)linksMap.get(link);
try
{
JRHyperlinkListener listener = null;
for(int i = 0; i < hyperlinkListeners.size(); i++)
{
listener = (JRHyperlinkListener)hyperlinkListeners.get(i);
listener.gotoHyperlink(element);
}
}
catch(JRException e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(this, m_messages.getString("message.jrerrorhyperlink"));
}
}
/**
*/
private void setPageIndex(int index)
{
pageIndex = index;
if (
jasperPrint != null &&
jasperPrint.getPages() != null &&
jasperPrint.getPages().size() > 0
)
{
btnFirst.setEnabled( (pageIndex > 0) );
btnPrevious.setEnabled( (pageIndex > 0) );
btnNext.setEnabled( (pageIndex < jasperPrint.getPages().size() - 1) );
btnLast.setEnabled( (pageIndex < jasperPrint.getPages().size() - 1) );
txtGoTo.setEnabled(btnFirst.isEnabled() || btnLast.isEnabled());
txtGoTo.setText("" + (pageIndex + 1));
lblStatus.setText("( " + (pageIndex + 1) + " / " + jasperPrint.getPages().size() + " )");
}
else
{
btnFirst.setEnabled(false);
btnPrevious.setEnabled(false);
btnNext.setEnabled(false);
btnLast.setEnabled(false);
txtGoTo.setEnabled(false);
txtGoTo.setText("");
lblStatus.setText("");
}
}
/**
*/
protected void loadReport(String fileName, boolean isXML) throws JRException
{
if (isXML)
{
jasperPrint = JRPrintXmlLoader.load(fileName);
}
else
{
jasperPrint = (JasperPrint)JRLoader.loadObject(fileName);
}
type = TYPE_FILE_NAME;
this.isXML = isXML;
reportFileName = fileName;
btnReload.setEnabled(true);
}
/**
*/
protected void loadReport(InputStream is, boolean isXML) throws JRException
{
if (isXML)
{
jasperPrint = JRPrintXmlLoader.load(is);
}
else
{
jasperPrint = (JasperPrint)JRLoader.loadObject(is);
}
type = TYPE_INPUT_STREAM;
this.isXML = isXML;
btnReload.setEnabled(false);
}
/**
*/
protected void loadReport(JasperPrint jrPrint) throws JRException
{
jasperPrint = jrPrint;
type = TYPE_JASPER_PRINT;
isXML = false;
btnReload.setEnabled(false);
}
/**
*/
protected void refreshPage()
{
if (
jasperPrint == null ||
jasperPrint.getPages() == null ||
jasperPrint.getPages().size() == 0
)
{
pnlPage.setVisible(false);
btnSave.setEnabled(false);
btnPrint.setEnabled(false);
btnActualSize.setEnabled(false);
btnFitPage.setEnabled(false);
btnFitWidth.setEnabled(false);
btnZoomIn.setEnabled(false);
btnZoomOut.setEnabled(false);
cmbZoom.setEnabled(false);
if (jasperPrint != null)
{
JOptionPane.showMessageDialog(this, m_messages.getString("message.jrnopages"));
}
return;
}
pnlPage.setVisible(true);
btnSave.setEnabled(true);
btnPrint.setEnabled(true);
btnActualSize.setEnabled(true);
btnFitPage.setEnabled(true);
btnFitWidth.setEnabled(true);
btnZoomIn.setEnabled(zoom < MAX_ZOOM);
btnZoomOut.setEnabled(zoom > MIN_ZOOM);
cmbZoom.setEnabled(true);
Image image = null;
ImageIcon imageIcon = null;
Dimension dim = new Dimension(
(int)(jasperPrint.getPageWidth() * zoom) + 8, // 2 from border, 5 from shadow and 1 extra pixel for image
(int)(jasperPrint.getPageHeight() * zoom) + 8
);
pnlPage.setMaximumSize(dim);
pnlPage.setMinimumSize(dim);
pnlPage.setPreferredSize(dim);
try
{
image = JasperPrintManager.printPageToImage(jasperPrint, pageIndex, zoom);
imageIcon = new ImageIcon(image);
}
catch(Exception e)
{
e.printStackTrace();
JOptionPane.showMessageDialog(this, m_messages.getString("message.jrerrordisplaying"));
}
pnlLinks.removeAll();
linksMap = new HashMap();
java.util.List pages = jasperPrint.getPages();
JRPrintPage page = (JRPrintPage)pages.get(pageIndex);
Collection elements = page.getElements();
if(elements != null && elements.size() > 0)
{
String toolTip = null;
JPanel link = null;
JRPrintElement element = null;
JRPrintHyperlink hyperlink = null;
for(Iterator it = elements.iterator(); it.hasNext();)
{
element = (JRPrintElement)it.next();
if (
element instanceof JRPrintHyperlink &&
((JRPrintHyperlink)element).getHyperlinkType() != JRHyperlink.HYPERLINK_TYPE_NONE
)
{
hyperlink = (JRPrintHyperlink)element;
link = new JPanel();
link.setCursor(new Cursor(Cursor.HAND_CURSOR));
link.setLocation(
(int)(element.getX() * zoom),
(int)(element.getY() * zoom)
);
link.setSize(
(int)(element.getWidth() * zoom),
(int)(element.getHeight() * zoom)
);
link.setOpaque(false);
toolTip = null;
switch(hyperlink.getHyperlinkType())
{
case JRHyperlink.HYPERLINK_TYPE_REFERENCE :
{
toolTip = hyperlink.getHyperlinkReference();
break;
}
case JRHyperlink.HYPERLINK_TYPE_LOCAL_ANCHOR :
{
if (hyperlink.getHyperlinkAnchor() != null)
{
toolTip = "#" + hyperlink.getHyperlinkAnchor();
}
break;
}
case JRHyperlink.HYPERLINK_TYPE_LOCAL_PAGE :
{
if (hyperlink.getHyperlinkPage() != null)
{
toolTip = "#page " + hyperlink.getHyperlinkPage();
}
break;
}
case JRHyperlink.HYPERLINK_TYPE_REMOTE_ANCHOR :
{
toolTip = "";
if (hyperlink.getHyperlinkReference() != null)
{
toolTip = toolTip + hyperlink.getHyperlinkReference();
}
if (hyperlink.getHyperlinkAnchor() != null)
{
toolTip = toolTip + "#" + hyperlink.getHyperlinkAnchor();
}
break;
}
case JRHyperlink.HYPERLINK_TYPE_REMOTE_PAGE :
{
toolTip = "";
if (hyperlink.getHyperlinkReference() != null)
{
toolTip = toolTip + hyperlink.getHyperlinkReference();
}
if (hyperlink.getHyperlinkPage() != null)
{
toolTip = toolTip + "#page " + hyperlink.getHyperlinkPage();
}
break;
}
default :
{
break;
}
}
link.setToolTipText(toolTip);
link.addMouseListener(mouseListener);
pnlLinks.add(link);
linksMap.put(link, element);
}
}
}
lblPage.setIcon(imageIcon);
}
/**
*/
private void emptyContainer(Container container)
{
Component[] components = container.getComponents();
if (components != null)
{
for(int i = 0; i < components.length; i++)
{
if (components[i] instanceof Container)
{
emptyContainer((Container)components[i]);
}
}
}
components = null;
container.removeAll();
container = null;
}
/**
*/
private float getZoomRatio()
{
float newZoom = zoom;
try
{
newZoom =
zoomDecimalFormat.parse(
String.valueOf(cmbZoom.getEditor().getItem())
).floatValue() / 100f;
}
catch(ParseException e)
{
}
return newZoom;
}
/**
*/
private void setZoomRatio(float newZoom)
{
if (newZoom > 0)
{
cmbZoom.getEditor().setItem(
zoomDecimalFormat.format(newZoom * 100) + "%"
);
if (zoom != newZoom)
{
zoom = newZoom;
refreshPage();
}
}
}
// Variables declaration - do not modify//GEN-BEGIN:variables
protected javax.swing.JToggleButton btnActualSize;
protected javax.swing.JButton btnFirst;
protected javax.swing.JToggleButton btnFitPage;
protected javax.swing.JToggleButton btnFitWidth;
protected javax.swing.JButton btnLast;
protected javax.swing.JButton btnNext;
protected javax.swing.JButton btnPrevious;
protected javax.swing.JButton btnPrint;
protected javax.swing.JButton btnReload;
protected javax.swing.JButton btnSave;
protected javax.swing.JButton btnZoomIn;
protected javax.swing.JButton btnZoomOut;
protected javax.swing.JComboBox cmbZoom;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JLabel lblPage;
protected javax.swing.JLabel lblStatus;
private javax.swing.JPanel pnlInScroll;
private javax.swing.JPanel pnlLinks;
private javax.swing.JPanel pnlMain;
private javax.swing.JPanel pnlPage;
protected javax.swing.JPanel pnlSep01;
protected javax.swing.JPanel pnlSep02;
protected javax.swing.JPanel pnlSep03;
private javax.swing.JScrollPane scrollPane;
protected javax.swing.JTextField txtGoTo;
// End of variables declaration//GEN-END:variables
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -