Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Диграммы в JSF с использованием ajax4jsf


Автор: Vofka 12.3.2007, 19:13
Есть ли возможность увеличивать  диаграмму которая котображается с помощью mediaOutput 
Код

<a4j:mediaOutput binding="#{backing_pages_aya.mediaOutput2}" element="img" cacheable="false" session="false"
                                createContent="#{backing_pages_aya.paint}" value="null" mimeType="image/jpeg"  />


график формируется при нажатии на кнопку

Код

    public String commandButton_action() {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
        DCBindingContainer dcBindings = 
            (DCBindingContainer)findBindingContainer(getBindings(), 
                                                     "TestPageDef");
        AttributeBinding begindate = 
            (AttributeBinding)dcBindings.getControlBinding("TestBeginDate");
        AttributeBinding enddate = 
            (AttributeBinding)dcBindings.getControlBinding("TestEndDate");
        System.out.println(begindate);
        System.out.println(enddate);
        OperationBinding operationBinding = 
            (OperationBinding)bindings.getOperationBinding("getViewObject");
        ViewObject vo = (ViewObject)operationBinding.execute();
        vo.setWhereClause("StdLoadData.TIMESTAMP between to_date('" + 
                          begindate + 
                          "',  'yyyy-mm-dd hh24:mi:ss\".0\"') and to_date('" + 
                          enddate + 
                          "',  'yyyy-mm-dd hh24:mi:ss\".0\"') and StdLoadData.IND_ID=2");
        vo.executeQuery();
        vo.first();
        TimeSeries timeseries = new TimeSeries("", Second.class);
        for (int c = 0; c < vo.getRowCount(); c++) {
            try {
                timeseries.addOrUpdate(new Second(sf.parse(vo.getCurrentRow().getAttribute(0).toString())), 
                                       new Double(vo.getCurrentRow().getAttribute(2).toString()));

            } catch (Exception e2) {
                System.out.println(e2);
            }
            vo.next();
        }
        getMediaOutput2().setValue(timeseries);
        return "null";
    }
 

метод для отрисовки графика.
Код

        public void paint(OutputStream out, Object data) throws IOException {
        if (data == null) {
        } else {
            TimeSeriesCollection timeseriescollection = 
                new TimeSeriesCollection((TimeSeries)data);
            jfreechartik = 
                    ChartFactory.createTimeSeriesChart("", "Время", 
                                                       "Значение", 
                                                       timeseriescollection, 
                                                       false, true, false);
            BufferedImage img = jfreechartik.createBufferedImage(400, 400);
            ImageIO.write(img, "jpeg", out);
        }
    }


хотелось бы что бы при нажатии на график открывалось новое окошко с увеличенным изображением.Как это можно сделать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)