📄 optics_visualizer.java
字号:
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 + -