⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optics_visualizer.java

📁 数据挖掘中聚类的算法
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                new GridBagConstraints(0, 0, 1, 1, 1, 1,
                        GridBagConstraints.CENTER,
                        GridBagConstraints.BOTH,
                        new Insets(5, 5, 5, 5), 0, 0));

        settingsPanel.add(setPanelRight,
                new GridBagConstraints(1, 0, 1, 1, 1, 1,
                        GridBagConstraints.CENTER,
                        GridBagConstraints.BOTH,
                        new Insets(5, 5, 5, 5), 0, 0));

        return settingsPanel;
    }

    /**
     * Disables all components from the settingsPanel
     */
    private void disableSettingsPanel() {

        verticalSlider.setEnabled(false);
        coreDistanceColorButton.setEnabled(false);
        reachDistanceColorButton.setEnabled(false);
        graphBackgroundColorButton.setEnabled(false);
        resetColorButton.setEnabled(false);
        settingsPanel.setVisible(false);
    }

    /**
     * Enables all components from the settingsPanel
     */
    private void enableSettingsPanel() {
        verticalSlider.setEnabled(true);
        coreDistanceColorButton.setEnabled(true);
        reachDistanceColorButton.setEnabled(true);
        graphBackgroundColorButton.setEnabled(true);
        resetColorButton.setEnabled(true);
        settingsPanel.setVisible(true);
    }

    /**
     * Creates the TabbedPane
     * @return TabbedPane
     */
    private JComponent createTabbedPane() {
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab("Table", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Table16.gif"))),
                clusteringResultsTable(),
                "Show table of DataObjects, Core- and Reachability-Distances");
        tabbedPane.addTab("Graph - Epsilon: " + serObject.getEpsilon() + ", MinPoints: " + serObject.getMinPoints()
                , new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Graph16.gif"))),
                graphPanel(),
                "Show Plot of Core- and Reachability-Distances");

        tabbedPane.addChangeListener(new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
                int c = tabbedPane.getSelectedIndex();
                if (c == 0)
                    disableSettingsPanel();
                else
                    enableSettingsPanel();
            }
        });

        return tabbedPane;
    }

    /**
     * Creates the ToolBar
     * @return ToolBar
     */
    private JComponent createToolBar() {
        toolBar = new JToolBar();
        toolBar.setName("OPTICS Visualizer ToolBar");
        toolBar.setFloatable(false);
        toolBarButton_open = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Open16.gif"))));
        toolBarButton_open.setToolTipText("Open OPTICS-Session");
        toolBarButton_open.addActionListener(frameListener);
        toolBar.add(toolBarButton_open);

        toolBarButton_save = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Save16.gif"))));
        toolBarButton_save.setToolTipText("Save OPTICS-Session");
        toolBarButton_save.addActionListener(frameListener);
        toolBar.add(toolBarButton_save);
        toolBar.addSeparator(new Dimension(10, 25));

        toolBarButton_parameters = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Parameters16.gif"))));
        toolBarButton_parameters.setToolTipText("Show epsilon, MinPoints...");
        toolBarButton_parameters.addActionListener(frameListener);
        toolBar.add(toolBarButton_parameters);

        toolBar.addSeparator(new Dimension(10, 25));

        toolBarButton_help = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Help16.gif"))));
        toolBarButton_help.setToolTipText("Help topics");
        toolBarButton_help.addActionListener(frameListener);
        toolBar.add(toolBarButton_help);

        toolBarButton_about = new JButton(new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Information16.gif"))));
        toolBarButton_about.setToolTipText("About");
        toolBarButton_about.addActionListener(frameListener);
        toolBar.add(toolBarButton_about);

        return toolBar;
    }

    /**
     * Creates the OPTICS clustering results table
     * @return Table
     */
    private JComponent clusteringResultsTable() {
        resultVectorTable = new JTable();
        String[] resultVectorTableColumnNames = {"Key",
                                                 "DataObject",
                                                 "Core-Distance",
                                                 "Reachability-Distance"};

        DefaultTableColumnModel resultVectorTableColumnModel = new DefaultTableColumnModel();
        for (int i = 0; i < resultVectorTableColumnNames.length; i++) {
            TableColumn tc = new TableColumn(i);
            tc.setHeaderValue(resultVectorTableColumnNames[i]);
            resultVectorTableColumnModel.addColumn(tc);
        }

        ResultVectorTableModel resultVectorTableModel = new ResultVectorTableModel(serObject.getResultVector());
        resultVectorTable = new JTable(resultVectorTableModel, resultVectorTableColumnModel);
        resultVectorTable.getColumnModel().getColumn(0).setPreferredWidth(70);
        resultVectorTable.getColumnModel().getColumn(1).setPreferredWidth(400);
        resultVectorTable.getColumnModel().getColumn(2).setPreferredWidth(150);
        resultVectorTable.getColumnModel().getColumn(3).setPreferredWidth(150);
        resultVectorTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        JScrollPane resultVectorTableScrollPane = new JScrollPane(resultVectorTable,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        return resultVectorTableScrollPane;
    }

    /**
     * Creates the OPTICS Plot
     * @return JComponent with the PLOT
     */
    private JComponent graphPanel() {

        graphPanel = new GraphPanel(serObject.getResultVector(), verValue, true, true);
        graphPanel.setPreferredSize(new Dimension((10 * serObject.getDatabaseSize()) +
                serObject.getDatabaseSize(), graphPanel.getHeight()));
        graphPanel.setBackground(new Color(255, 255, 179));
        graphPanel.setOpaque(true);

        graphPanelScrollPane = new JScrollPane(graphPanel,
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

        return (graphPanelScrollPane);
    }

    /**
     * Constructs the default MenuBar
     * @return MenuBar
     */
    private JMenuBar constructDefaultMenuBar() {
        defaultMenuBar = new JMenuBar();

        JMenu fileMenu = new JMenu("File");
        fileMenu.setMnemonic('F');
        open = new JMenuItem("Open...", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Open16.gif"))));
        open.setMnemonic('O');
        open.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));
        open.addActionListener(frameListener);
        fileMenu.add(open);

        save = new JMenuItem("Save...", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Save16.gif"))));
        save.setMnemonic('S');
        save.setAccelerator(KeyStroke.getKeyStroke('S', Event.CTRL_MASK));
        save.addActionListener(frameListener);
        fileMenu.add(save);

        fileMenu.addSeparator();

        exit = new JMenuItem("Exit", 'X');
        exit.addActionListener(frameListener);
        fileMenu.add(exit);

        defaultMenuBar.add(fileMenu);

        JMenu toolsMenu = new JMenu("View");
        toolsMenu.setMnemonic('V');
        parameters = new JMenuItem("Parameters...", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Parameters16.gif"))));
        parameters.setMnemonic('P');
        parameters.setAccelerator(KeyStroke.getKeyStroke('P', Event.CTRL_MASK));
        parameters.addActionListener(frameListener);
        toolsMenu.add(parameters);

        defaultMenuBar.add(toolsMenu);

        JMenu miscMenu = new JMenu("Help");
        miscMenu.setMnemonic('H');
        help = new JMenuItem("Help Topics", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Help16.gif"))));
        help.setMnemonic('H');
        help.setAccelerator(KeyStroke.getKeyStroke('H', Event.CTRL_MASK));
        help.addActionListener(frameListener);
        miscMenu.add(help);

        about = new JMenuItem("About...", new ImageIcon(Toolkit.getDefaultToolkit().
                getImage(ClassLoader.getSystemResource("weka/clusterers/forOPTICSAndDBScan/OPTICS_GUI/Graphics/Information16.gif"))));
        about.setMnemonic('A');
        about.setAccelerator(KeyStroke.getKeyStroke('A', Event.CTRL_MASK));
        about.addActionListener(frameListener);
        miscMenu.add(about);
        defaultMenuBar.add(miscMenu);

        return defaultMenuBar;
    }

    /**
     * Sets a MenuBar for the this frame
     * @param menuBar New MenuBar
     */
    private void setMenuBar(JMenuBar menuBar) {
        frame.setJMenuBar(menuBar);
    }

    /**
     * Shows a little frame with statistic information about the OPTICS-results
     */
    private void loadStatisticsFrame() {
        statisticsFrame = new JFrame("Parameters");
        statisticsFrame.getContentPane().setLayout(new BorderLayout());

        JPanel statPanel_Labels = new JPanel(new GridBagLayout());
        JPanel statPanel_Labels_Left = new JPanel(new GridLayout(9, 1));
        JPanel statPanel_Labels_Right = new JPanel(new GridLayout(9, 1));

        statPanel_Labels_Left.add(new JLabel("Number of clustered DataObjects: "));
        statPanel_Labels_Right.add(new JLabel(Integer.toString(serObject.getDatabaseSize())));
        statPanel_Labels_Left.add(new JLabel("Number of attributes: "));
        statPanel_Labels_Right.add(new JLabel(Integer.toString(serObject.getNumberOfAttributes())));
        statPanel_Labels_Left.add(new JLabel("Epsilon: "));
        statPanel_Labels_Right.add(new JLabel(Double.toString(serObject.getEpsilon())));
        statPanel_Labels_Left.add(new JLabel("MinPoints: "));
        statPanel_Labels_Right.add(new JLabel(Integer.toString(serObject.getMinPoints())));
        statPanel_Labels_Left.add(new JLabel("Write results to file: "));
        statPanel_Labels_Right.add(new JLabel(serObject.isOpticsOutputs() ? "yes" : "no"));
        statPanel_Labels_Left.add(new JLabel("Index: "));
        statPanel_Labels_Right.add(new JLabel(serObject.getDatabase_Type()));
        statPanel_Labels_Left.add(new JLabel("Distance-Type: "));
        statPanel_Labels_Right.add(new JLabel(serObject.getDatabase_distanceType()));
        statPanel_Labels_Left.add(new JLabel("Number of generated clusters: "));
        statPanel_Labels_Right.add(new JLabel(Integer.toString(serObject.getNumberOfGeneratedClusters())));
        statPanel_Labels_Left.add(new JLabel("Elapsed-time: "));
        statPanel_Labels_Right.add(new JLabel(serObject.getElapsedTime()));
        statPanel_Labels.setBorder(BorderFactory.createTitledBorder(" OPTICS parameters "));

        statPanel_Labels.add(statPanel_Labels_Left,
                new GridBagConstraints(0, 0, 1, 1, 1, 1,
                        GridBagConstraints.CENTER,
                        GridBagConstraints.BOTH,
                        new Insets(0, 5, 2, 0), 0, 0));

        statPanel_Labels.add(statPanel_Labels_Right,
                new GridBagConstraints(1, 0, 1, 1, 3, 1,
                        GridBagConstraints.CENTER,
                        GridBagConstraints.BOTH,
                        new Insets(0, 5, 2, 5), 0, 0));

        statisticsFrame.getContentPane().add(statPanel_Labels, BorderLayout.CENTER);

        statisticsFrame.addWindowListener(new WindowAdapter() {
            /**
             * Invoked when a window is in the process of being closed.
             * The close operation can be overridden at this point.
             */
            public void windowClosing(WindowEvent e) {
                statisticsFrame.dispose();
            }
        });

        JPanel okButtonPanel = new JPanel(new GridBagLayout());

        JButton okButton = new JButton("OK");
        okButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -