Java 在同一数据集上使用不同的数据集

Java 在同一数据集上使用不同的数据集,java,jfreechart,jlist,jcheckbox,Java,Jfreechart,Jlist,Jcheckbox,嗨,朋友们,我有一个DefaultPieDataset,它是这样创建的: package business.intelligence.system; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent;

嗨,朋友们,我有一个DefaultPieDataset,它是这样创建的:

package business.intelligence.system;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JInternalFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.jdbc.JDBCPieDataset;


public class DepositBase extends JInternalFrame {

private JPanel jpAcc = new JPanel();
private JList checkBoxesJList;
private JLabel lScheme;
private String schm = "";

DepositBase() throws SQLException, ClassNotFoundException {
    super("Deposit base", false, true, false, true);
    setSize(1300, 600);
    jpAcc.setLayout(null);
    jpAcc.setBackground(Color.LIGHT_GRAY);
    JScrollPane scrollPane = new JScrollPane(checkBoxesJList);
    lScheme = new JLabel("<html><u>SCHEME CODE</u></html>");
    lScheme.setBounds(10, 5, 100, 25);
    lScheme.setForeground(Color.BLACK);
    Connection conn = null;
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.80:1521:simba9i", "SYSTEM", "system123");
        Statement st = conn.createStatement();
        String combo = "select distinct SCHM_CODE from DLY_DEP_VIEW";
        ResultSet res = st.executeQuery(combo);
        String ids = "";
        ArrayList<String> v = new ArrayList<>();
        v.add("All");
        while (res.next()) {
            ids = res.getString("SCHM_CODE");
            v.add(ids);
            checkBoxesJList = new JList(createData(v));

        }



        checkBoxesJList.setBounds(10, 30, 80, 600);
        checkBoxesJList.setBackground(Color.LIGHT_GRAY);
        checkBoxesJList.setCellRenderer(new CheckListRenderer());
        checkBoxesJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    } catch (Exception as) {
    }


    checkBoxesJList.addListSelectionListener(new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent evt) {
            if (evt.getValueIsAdjusting()) {
                return;
            }
            Object[] temp = checkBoxesJList.getSelectedValues();
            for (int i = 0; i < temp.length; i++) {
                // System.out.println(temp[i]);
                Connection conn = null;
                schm = temp[i].toString();
               // System.out.println(schm);
                try {

                    createDataset(schm);
                } catch (Exception ae) {
                }


            }
        }
    });

    checkBoxesJList.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            int index = checkBoxesJList.locationToIndex(e.getPoint());
            CheckableItem item = (CheckableItem) checkBoxesJList.getModel().getElementAt(index);
            item.setSelected(!item.isSelected());
            Rectangle rect = checkBoxesJList.getCellBounds(index, index);
            checkBoxesJList.repaint(rect);
        }
    });



    final PieDataset dataset = createDataset(schm);
    final JFreeChart chart = createChart(dataset);
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new Dimension(900, 900));
    chartPanel.setBounds(550, 30, 700, 500);
    // setContentPane(chartPanel);
    jpAcc.add(chartPanel);
    jpAcc.add(checkBoxesJList);
    jpAcc.add(scrollPane);
    jpAcc.add(lScheme);


    getContentPane().add(jpAcc);
    setVisible(true);

}

private PieDataset createDataset(String schm) throws SQLException, ClassNotFoundException {


    // create the dataset...
    Connection conn = null;
    Class.forName("oracle.jdbc.driver.OracleDriver");
    conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.80:1521:simba9i", "SYSTEM", "system123");
    final DefaultPieDataset dataset = new JDBCPieDataset(conn,
            "select distinct SCHM_CODE, sum(DEP_AMT) as AMOUNT from DLY_DEP_VIEW  where schm_code = '" + schm + "' group by schm_code");
    System.out.println(schm);
    try {
    } catch (Exception ad) {
        JOptionPane.showMessageDialog(this, ad,
                "Error", JOptionPane.ERROR_MESSAGE);
    }

    return dataset;

}

private CheckableItem[] createData(ArrayList<String> strs) {
    int n = strs.size();
    CheckableItem[] items = new CheckableItem[n];
    for (int i = 0; i < n; i++) {
        items[i] = new CheckableItem(strs.get(i));
    }
    return items;
}

private JFreeChart createChart(final PieDataset dataset) {

    // create the chart...
    final JFreeChart chart = ChartFactory.createPieChart3D(
            "Deposit Base", dataset, true, true, false);



    // set the background color for the chart...
    chart.setBackgroundPaint(Color.white);

    // get a reference to the plot for further customisation...
    final PiePlot3D plot = (PiePlot3D) chart.getPlot();     
    plot.setLabelGenerator(null);
    //plot.setLabelGenerator(new StandardPieSectionLabelGenerator(" {2}", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance()));

    plot.setForegroundAlpha(1f);
    plot.setNoDataMessage("No data to display");
    return chart;


}
}

class CheckableItem {

private String str;
private boolean isSelected;

public CheckableItem(String str) {
    this.str = str;
    isSelected = false;
}

public void setSelected(boolean b) {
    isSelected = b;
}

public boolean isSelected() {
    return isSelected;
}

@Override
public String toString() {
    return str;
}
}

class CheckListRenderer extends JCheckBox implements ListCellRenderer {

public CheckListRenderer() {
    setBackground(UIManager.getColor("List.textBackground"));
    setForeground(UIManager.getColor("List.textForeground"));
}

@Override
public Component getListCellRendererComponent(JList list, Object value,
        int index, boolean isSelected, boolean hasFocus) {
    setEnabled(list.isEnabled());
    setSelected(((CheckableItem) value).isSelected());
    setFont(list.getFont());
    setText(value.toString());
    return this;
}
}
package business.intelligence.system;
导入java.awt.Color;
导入java.awt.Component;
导入java.awt.Dimension;
导入java.awt.Rectangle;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
导入javax.swing.JInternalFrame;
导入org.jfree.chart.ChartFactory;
导入org.jfree.chart.ChartPanel;
导入org.jfree.chart.JFreeChart;
导入javax.swing.*;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.util.ArrayList;
导入javax.swing.event.ListSelectionEvent;
导入javax.swing.event.ListSelectionListener;
导入org.jfree.chart.plot.PiePlot3D;
导入org.jfree.data.general.DefaultPieDataset;
导入org.jfree.data.general.PieDataset;
导入org.jfree.data.jdbc.jdbc数据集;
公共类DepositorBase扩展了JInternalFrame{
private JPanel jpAcc=new JPanel();
私人JList检查列表;
私人JLabel lScheme;
私有字符串schm=“”;
Depositobase()抛出SQLException,ClassNotFoundException{
超级(“存款基数”,假,真,假,真);
设置大小(1300600);
jpAcc.setLayout(空);
jpAcc.立根背景(颜色:浅灰色);
JScrollPane scrollPane=新的JScrollPane(复选框列表);
lScheme=新的JLabel(“方案代码”);
lScheme.setBounds(10,5100,25);
lScheme.setForeground(颜色:黑色);
连接conn=null;
试一试{
类forName(“oracle.jdbc.driver.OracleDriver”);
conn=DriverManager.getConnection(“jdbc:oracle:thin:@192.168.1.80:1521:simba9i”、“SYSTEM”、“system123”);
语句st=conn.createStatement();
String combo=“从DLY_DEP_视图中选择不同的SCHM_代码”;
结果集res=st.executeQuery(组合);
字符串id=“”;
ArrayList v=新的ArrayList();
v、 添加(“全部”);
while(res.next()){
ids=res.getString(“SCHM_代码”);
v、 添加(ID);
checkBoxesJList=newjlist(createData(v));
}
复选框列表.立根(10,30,80600);
复选框列表。背景(颜色。浅灰色);
setCellRenderer(新的CheckListRenderer());
复选框列表。设置选择模式(列表选择模式。单选);
}捕获(异常为){
}
复选框列表。addListSelectionListener(新建ListSelectionListener(){
public void值已更改(ListSelectionEvent evt){
if(evt.getValueIsAdjusting()){
返回;
}
Object[]temp=checkBoxesJList.getSelectedValues();
对于(int i=0;i