报表知识库
我要提问

Swing中实现参数查询

Swing中实现参数查询

需求背景

基于Swing开发项目的用户,不仅仅满足于把结果报表在JFrame窗口中展现、打印,他们还希望自己能够输入查询条件,以实现实时的数据查询。

解决思路

1.做一个带有参数查询的报表,报表的具体设计如下图所示。

2.构建参数查询面板

在面板中通过JLabelJTextFieldJButton对象,分别作为参数查询的提示字符,参数输入框,以及查询按钮控件,构建出参数模板的样式。

3.传递参数给报表,

对于JButton控件添加事件监听,对于输入的参数可以传递到报表中,以便计算报表。

4.报表在面板中进行展现

构造CSReport控件,设置在面板中显示的相应属性,在面板中进行输出。

需求实现的部分代码

1.构建查询面板

frame = new JFrame(参数模板);

           frame.setSize(900, 900);

    panel = new JPanel();

FlowLayout flowLayout = new FlowLayout();  

flowLayout.setHgap(10);  

flowLayout.setVgap(10);

panel.setLayout(flowLayout);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setContentPane(panel);

    frame.show();

    button = new JButton();

    button.setText(查询);

    label = new JLabel();

    label.setText(请您输入参数);

    text=new JTextField(20);

2.JButton的按钮添加事件监听。

    button.addActionListener(new Listener(text));

panel.add(label);

    panel.add(text);

    panel.add(button);

frame.validate();

3.在监听类中获取到JTextField中输入的值。

public class Listener implements ActionListener {

 

    JTextField lab;

    public Listener(JTextField text) {

       this.lab = text;

    }

    public void actionPerformed(ActionEvent e) {

       String param = lab.getText();}}

4.设置报表参数值。

       ParamMetaData pmd = rd.getParamMetaData(); // 从报表定义中取得参数元对象ParamMetaData

       String paramOrMocrName = “”;

       if (pmd != null) {

 

           for (int i = 0, count = pmd.getParamCount(); i < count; i++) { // 讲究优化的写法

              paramOrMocrName = pmd.getParam(i).getParamName(); // 获取参数名

              ctx.setParamValue(paramOrMocrName, param); // 设参数值

5.计算报表并在进行展现

       Engine engine = new Engine(rd, ctx);

       IReport iReport = engine.calc(); // 运算代码,获得一个IReport对象

       CSReport csReport = new CSReport(iReport); // 构造CSReport控件

       JFrame jf = new JFrame(润乾报表); // 构造JFrame界面

       try {

           jf.getContentPane().add(csReport.getDisplayPane());

       catch (Throwable e1) {

           // TODO Auto-generated catch block

           e1.printStackTrace();

       // 设置JFrame的相关属性并展现

       jf.setSize(600, 400);

       jf.setLocation(200, 100);

       jf.show();

需求实现的效果图:

在参数模板中的文本输入框中输入table_id1,点击查询,弹出根据参数计算后的报表。

实例总述

swing中进行参数查询,首先通过控件构建出参数模板的样式,给输入控件添加监听,在事件触发时,将参数模板中的值取到,同时,也要获取到报表中所涉及的参数,将输入的参数值赋给对应的参数,计算报表,最终在面板中展现,附件中是完整的实例代码。