Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports 如何使jasper report位于JDialog的顶部?_Jasper Reports_Jdialog_Jasper Plugin - Fatal编程技术网

Jasper reports 如何使jasper report位于JDialog的顶部?

Jasper reports 如何使jasper report位于JDialog的顶部?,jasper-reports,jdialog,jasper-plugin,Jasper Reports,Jdialog,Jasper Plugin,我使用用于Netbeans的jasper reports插件生成报告,我使用JDialog中的一个按钮来显示我的jasper报告。但是报告在我的JDialog上显示,这里有什么问题 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

我使用用于Netbeans的jasper reports插件生成报告,我使用JDialog中的一个按钮来显示我的jasper报告。但是报告在我的JDialog上显示,这里有什么问题

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    // TODO add your handling code here:
    Map<String, Object> params = new HashMap <>();
    try {
        Connection kon = DriverManager.getConnection(database,user,pass);
        JasperDesign jasperDesign = JRXmlLoader.load("Myreports.jrxml");
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, kon);
        JasperViewer jasperViewer = new JasperViewer(jasperPrint, false); 
        jasperViewer.setTitle("My Reports");
        jasperViewer.setVisible(true);
    } catch (SQLException | JRException e){
        e.printStackTrace();
    }
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
Map params=newhashmap();
试一试{
Connection kon=DriverManager.getConnection(数据库、用户、通行证);
JasperDesign JasperDesign=jrxmloader.load(“Myreports.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(jasperDesign);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,params,kon);
JasperViewer=新的JasperViewer(jasperPrint,false);
jasperViewer.setTitle(“我的报告”);
jasperViewer.setVisible(true);
}catch(SQLException | JRE异常){
e、 printStackTrace();
}
}
我是这样想的:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                                
    // TODO add your handling code here:
    Map<String, Object> params = new HashMap <>();
    try {
        Connection kon = DriverManager.getConnection(database,user,pass);
        JasperDesign jasperDesign = JRXmlLoader.load("Myreports.jrxml");
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, kon);
        JasperViewer jasperViewer = new JasperViewer(jasperPrint, false); 
        jasperViewer.setTitle("My Reports");
        setModal(false);
        jasperViewer.setVisible(true);
        setModal(true);
    } catch (SQLException | JRException e){
        e.printStackTrace();
    }
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
Map params=newhashmap();
试一试{
Connection kon=DriverManager.getConnection(数据库、用户、通行证);
JasperDesign JasperDesign=jrxmloader.load(“Myreports.jrxml”);
JasperReport-JasperReport=JasperCompileManager.compileReport(jasperDesign);
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,params,kon);
JasperViewer=新的JasperViewer(jasperPrint,false);
jasperViewer.setTitle(“我的报告”);
setModal(假);
jasperViewer.setVisible(true);
setModal(真);
}catch(SQLException | JRE异常){
e、 printStackTrace();
}
}

我的报告在JDialog上显示top,但其中没有任何按钮起作用。

您可以使用此代码使JR显示为JDialog:

//after creating jasperViewer//
jasperViewer = new JasperViewer(jasperPrint, false);
JDialog dialog = new JDialog(this);//the owner
dialog.setContentPane(jasperViewer.getContentPane());
dialog.setSize(jasperViewer.getSize());
dialog.setTitle("XXXXX");
dialog.setIconImage(Toolkit.getDefaultToolkit().getImage(
getClass().getResource("URL IMG")));
dialog.setVisible(true);

基于Jasperviewer的内容创建一个对话框

import java.awt.BorderLayout;
import java.awt.Toolkit;

import javax.swing.JDialog;
import javax.swing.JPanel;

import net.sf.jasperreports.engine.DefaultJasperReportsContext;
import net.sf.jasperreports.engine.JasperPrint;

public class ReportViewer extends JDialog {

    private static final long serialVersionUID = 1L;

    protected net.sf.jasperreports.swing.JRViewer viewer;
    private JPanel pnlMain;

    public ReportViewer(JDialog parent, JasperPrint jasperPrint) {
        super(parent, Boolean.TRUE);

        initComponents();

        this.viewer = new net.sf.jasperreports.swing.JRViewer(DefaultJasperReportsContext.getInstance(), jasperPrint,
                null, null);

        this.pnlMain.add(this.viewer, BorderLayout.CENTER);

    }

    private void initComponents() {
        pnlMain = new javax.swing.JPanel();

        setTitle("JasperViewer");
        setIconImage(new javax.swing.ImageIcon(getClass().getResource("/net/sf/jasperreports/view/images/jricon.GIF"))
                .getImage());
        addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm();
            }
        });

        pnlMain.setLayout(new java.awt.BorderLayout());

        getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER);

        pack();

        Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
        java.awt.Dimension screenSize = toolkit.getScreenSize();
        int screenResolution = toolkit.getScreenResolution();
        float zoom = ((float) screenResolution) / net.sf.jasperreports.swing.JRViewerPanel.REPORT_RESOLUTION;

        int height = (int) (550 * zoom);

        if (height > screenSize.getHeight()) {
            height = (int) screenSize.getHeight();
        }

        int width = (int) (750 * zoom);
        if (width > screenSize.getWidth()) {
            width = (int) screenSize.getWidth();
        }

        java.awt.Dimension dimension = new java.awt.Dimension(width, height);
        setSize(dimension);
        setLocation((screenSize.width - width) / 2, (screenSize.height - height) / 2);

    }

    private void exitForm() {

        this.setVisible(false);
        this.viewer.clear();
        this.viewer = null;
        this.getContentPane().removeAll();
        this.dispose();

    }

}
然后在模式帧上调用查看器自定义

new ReportViewer(this, jasperPrint).setVisible(Boolean.TRUE);

不要创建
JDialog
单独使用:

JasperViewer的方法。
setAlwaysOnTop(真)
JasperViewer
扩展JFrame{}

它将始终位于
JDialog
的顶部,即使是每个打开的窗口

JasperViewer jasperViewer = new JasperViewer(jasperPrint, false); 
  jasperViewer.setTitle("My Reports");
  setModal(false);
  jasperViewer.setAlwaysOnTop(true);  //here
  jasperViewer.setVisible(true);
  setModal(true);