知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > 快逸在CS模式下实现参数查询

快逸在CS模式下实现参数查询


快逸在CS模式下实现参数查询


需求背景


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


解决思路


1.做一个带有参数查询的报表,报表的具体复杂报表设计" target="_blank" class="quieeLink1">设计如下图所示。



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中进行参数查询,首先通过控件构建出参数模板的样式,给输入控件添加监听,在事件触发时,将参数模板中的值取到,同时,也要获取到报表中所涉及的参数,将输入的参数值赋给对应的参数,计算报表,最终在面板中展现。

本文标签:
发布日期:2011/06/27
本文分类: 设计基础