📄 resultspanel.java
字号:
p3.setBorder(BorderFactory.createTitledBorder("Configure test")); GridBagLayout gbL = new GridBagLayout(); p3.setLayout(gbL); int y = 0; GridBagConstraints gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(m_TesterClassesLabel,gbC); m_TesterClassesLabel.setDisplayedMnemonic('w'); m_TesterClassesLabel.setLabelFor(m_TesterClasses); p3.add(m_TesterClassesLabel); gbC = new GridBagConstraints(); gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbC.fill = GridBagConstraints.HORIZONTAL; gbL.setConstraints(m_TesterClasses, gbC); p3.add(m_TesterClasses); m_TesterClasses.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setTester(); } }); setSelectedItem(m_TesterClasses, ExperimenterDefaults.getTester()); y++; gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(m_DatasetKeyLabel,gbC); m_DatasetKeyLabel.setDisplayedMnemonic('R'); m_DatasetKeyLabel.setLabelFor(m_DatasetKeyBut); p3.add(m_DatasetKeyLabel); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_DatasetKeyBut, gbC); p3.add(m_DatasetKeyBut); y++; gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(m_ResultKeyLabel, gbC); m_ResultKeyLabel.setDisplayedMnemonic('C'); m_ResultKeyLabel.setLabelFor(m_ResultKeyBut); p3.add(m_ResultKeyLabel); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_ResultKeyBut, gbC); p3.add(m_ResultKeyBut); y++; JLabel lab = new JLabel("Comparison field", SwingConstants.RIGHT); lab.setDisplayedMnemonic('m'); lab.setLabelFor(m_CompareCombo); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbC.fill = GridBagConstraints.HORIZONTAL; gbL.setConstraints(m_CompareCombo, gbC); p3.add(m_CompareCombo); y++; lab = new JLabel("Significance", SwingConstants.RIGHT); lab.setDisplayedMnemonic('g'); lab.setLabelFor(m_SigTex); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbL.setConstraints(m_SigTex, gbC); p3.add(m_SigTex); y++; lab = new JLabel("Sorting (asc.) by", SwingConstants.RIGHT); lab.setDisplayedMnemonic('S'); lab.setLabelFor(m_SortCombo); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.WEST; gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_SortCombo, gbC); p3.add(m_SortCombo); y++; lab = new JLabel("Test base", SwingConstants.RIGHT); lab.setDisplayedMnemonic('b'); lab.setLabelFor(m_TestsButton); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_TestsButton, gbC); p3.add(m_TestsButton); y++; lab = new JLabel("Displayed Columns", SwingConstants.RIGHT); lab.setDisplayedMnemonic('i'); lab.setLabelFor(m_DisplayedButton); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_DisplayedButton, gbC); p3.add(m_DisplayedButton); y++; lab = new JLabel("Show std. deviations", SwingConstants.RIGHT); lab.setDisplayedMnemonic('a'); lab.setLabelFor(m_ShowStdDevs); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.WEST; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_ShowStdDevs, gbC); p3.add(m_ShowStdDevs); y++; lab = new JLabel("Output Format", SwingConstants.RIGHT); lab.setDisplayedMnemonic('O'); lab.setLabelFor(m_OutputFormatButton); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.EAST; gbC.gridy = y; gbC.gridx = 0; gbC.insets = new Insets(2, 10, 2, 10); gbL.setConstraints(lab, gbC); p3.add(lab); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.WEST; gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = y; gbC.gridx = 1; gbC.weightx = 100; gbC.insets = new Insets(5,0,5,0); gbL.setConstraints(m_OutputFormatButton, gbC); p3.add(m_OutputFormatButton); JPanel output = new JPanel(); output.setLayout(new BorderLayout()); output.setBorder(BorderFactory.createTitledBorder("Test output")); output.add(new JScrollPane(m_OutText), BorderLayout.CENTER); JPanel mondo = new JPanel(); gbL = new GridBagLayout(); mondo.setLayout(gbL); gbC = new GridBagConstraints(); // gbC.anchor = GridBagConstraints.WEST; // gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = 0; gbC.gridx = 0; gbL.setConstraints(p3, gbC); mondo.add(p3); JPanel bts = new JPanel(); m_PerformBut.setMnemonic('t'); m_SaveOutBut.setMnemonic('S'); bts.setLayout(new GridLayout(1,2,5,5)); bts.add(m_PerformBut); bts.add(m_SaveOutBut); gbC = new GridBagConstraints(); gbC.anchor = GridBagConstraints.NORTH; gbC.fill = GridBagConstraints.HORIZONTAL; gbC.gridy = 1; gbC.gridx = 0; gbC.insets = new Insets(5,5,5,5); gbL.setConstraints(bts, gbC); mondo.add(bts); gbC = new GridBagConstraints(); //gbC.anchor = GridBagConstraints.NORTH; gbC.fill = GridBagConstraints.BOTH; gbC.gridy = 2; gbC.gridx = 0; gbC.weightx = 0; gbC.weighty = 100; gbL.setConstraints(m_History, gbC); mondo.add(m_History); /*gbC = new GridBagConstraints(); gbC.fill = GridBagConstraints.BOTH; gbC.gridy = 0; gbC.gridx = 1; gbC.gridheight = 3; gbC.weightx = 100; gbC.weighty = 100; gbL.setConstraints(output, gbC);*/ //mondo.add(output); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, mondo, output); splitPane.setOneTouchExpandable(true); //splitPane.setDividerLocation(100); setLayout(new BorderLayout()); add(p1, BorderLayout.NORTH); //add(mondo , BorderLayout.CENTER); add(splitPane , BorderLayout.CENTER); } /** * Sets the combo-boxes to a fixed size so they don't take up too much room * that would be better devoted to the test output box */ protected void setComboSizes() { m_TesterClasses.setPreferredSize(COMBO_SIZE); m_DatasetKeyBut.setPreferredSize(COMBO_SIZE); m_ResultKeyBut.setPreferredSize(COMBO_SIZE); m_CompareCombo.setPreferredSize(COMBO_SIZE); m_SigTex.setPreferredSize(COMBO_SIZE); m_SortCombo.setPreferredSize(COMBO_SIZE); m_TesterClasses.setMaximumSize(COMBO_SIZE); m_DatasetKeyBut.setMaximumSize(COMBO_SIZE); m_ResultKeyBut.setMaximumSize(COMBO_SIZE); m_CompareCombo.setMaximumSize(COMBO_SIZE); m_SigTex.setMaximumSize(COMBO_SIZE); m_SortCombo.setMaximumSize(COMBO_SIZE); m_TesterClasses.setMinimumSize(COMBO_SIZE); m_DatasetKeyBut.setMinimumSize(COMBO_SIZE); m_ResultKeyBut.setMinimumSize(COMBO_SIZE); m_CompareCombo.setMinimumSize(COMBO_SIZE); m_SigTex.setMinimumSize(COMBO_SIZE); m_SortCombo.setMinimumSize(COMBO_SIZE); } /** * Tells the panel to use a new experiment. * * @param exp a value of type 'Experiment' */ public void setExperiment(Experiment exp) { m_Exp = exp; m_FromExpBut.setEnabled(exp != null); } /** * Queries the user enough to make a database query to retrieve experiment * results. */ protected void setInstancesFromDBaseQuery() { try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } String dbaseURL = m_InstanceQuery.getDatabaseURL(); String username = m_InstanceQuery.getUsername(); String passwd = m_InstanceQuery.getPassword(); /*dbaseURL = (String) JOptionPane.showInputDialog(this, "Enter the database URL", "Query Database", JOptionPane.PLAIN_MESSAGE, null, null, dbaseURL);*/ DatabaseConnectionDialog dbd= new DatabaseConnectionDialog(null,dbaseURL,username); dbd.setVisible(true); //if (dbaseURL == null) { if (dbd.getReturnValue()==JOptionPane.CLOSED_OPTION) { m_FromLab.setText("Cancelled"); return; } dbaseURL=dbd.getURL(); username=dbd.getUsername(); passwd=dbd.getPassword(); m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.setUsername(username); m_InstanceQuery.setPassword(passwd); m_InstanceQuery.setDebug(dbd.getDebug()); m_InstanceQuery.connectToDatabase(); if (!m_InstanceQuery.experimentIndexExists()) { System.err.println("not found"); m_FromLab.setText("No experiment index"); return; } System.err.println("found"); m_FromLab.setText("Getting experiment index"); Instances index = m_InstanceQuery.retrieveInstances("SELECT * FROM " + InstanceQuery.EXP_INDEX_TABLE); if (index.numInstances() == 0) { m_FromLab.setText("No experiments available"); return; } m_FromLab.setText("Got experiment index"); DefaultListModel lm = new DefaultListModel(); for (int i = 0; i < index.numInstances(); i++) { lm.addElement(index.instance(i).toString()); } JList jl = new JList(lm); jl.setSelectedIndex(0); int result; // display dialog only if there's not just one result! if (jl.getModel().getSize() != 1) { ListSelectorDialog jd = new ListSelectorDialog(null, jl); result = jd.showDialog(); } else { result = ListSelectorDialog.APPROVE_OPTION; } if (result != ListSelectorDialog.APPROVE_OPTION) { m_FromLab.setText("Cancelled"); return; } Instance selInst = index.instance(jl.getSelectedIndex()); Attribute tableAttr = index.attribute(InstanceQuery.EXP_RESULT_COL); String table = InstanceQuery.EXP_RESULT_PREFIX + selInst.toString(tableAttr); setInstancesFromDatabaseTable(table); } catch (Exception ex) { // 1. print complete stacktrace ex.printStackTrace(); // 2. print message in panel m_FromLab.setText("Problem reading database: '" + ex.getMessage() + "'"); } } /** * Examines the supplied experiment to determine the results destination * and attempts to load the results. * * @param exp a value of type 'Experiment' */ protected void setInstancesFromExp(Experiment exp) { if ((exp.getResultListener() instanceof CSVResultListener)) { File resultFile = ((CSVResultListener) exp.getResultListener()) .getOutputFile(); if ((resultFile == null)) { m_FromLab.setText("No result file"); } else { setInstancesFromFile(resultFile); } } else if (exp.getResultListener() instanceof DatabaseResultListener) { String dbaseURL = ((DatabaseResultListener) exp.getResultListener()) .getDatabaseURL(); try { if (m_InstanceQuery == null) { m_InstanceQuery = new InstanceQuery(); } m_InstanceQuery.setDatabaseURL(dbaseURL); m_InstanceQuery.connectToDatabase(); String tableName = m_InstanceQuery .getResultsTableName(exp.getResultProducer()); setInstancesFromDatabaseTable(tableName); } catch (Exception ex) { m_FromLab.setText("Problem reading database"); } } else { m_FromLab.setText("Can't get results from experiment"); } } /** * Queries a database to load results from the specified table name. The * database connection must have already made by m_InstanceQuery. * * @param tableName the name of the table containing results to retrieve. */ protected void setInstancesFromDatabaseTable(String tableName) { try { m_FromLab.setText("Reading from database, please wait..."); final Instances i = m_InstanceQuery.retrieveInstances("SELECT * FROM " + tableName); SwingUtilities.invokeAndWait(new Runnable() { public void run() { setInstances(i); } }); m_InstanceQuery.disconnectFromDatabase(); } catch (Exception ex) { m_FromLab.setText(ex.getMessage()); } } /** * Loads results from a set of instances contained in the supplied * file. * * @param f a value of type 'File' */ protected void setInstancesFromFile(File f) { String fileType = f.getName(); try { m_FromLab.setText("Reading from file..."); if (f.getName().toLowerCase().endsWith(Instances.FILE_EXTENSION)) { fileType = "arff"; Reader r = new BufferedReader(new FileReader(f)); setInstances(new Instances(r)); r.close(); } else if (f.getName().toLowerCase().endsWith(CSVLoader.FILE_EXTENSION)) { fileType = "csv"; CSVLoader cnv = new CSVLoader(); cnv.setSource(f); Instances inst = cnv.getDataSet(); setInstances(inst); } else { throw new Exception("Unrecognized file type"); } } catch (Exception ex) { m_FromLab.setText("File '" + f.getName() + "' not recognised as an " +fileType+" file."); if (JOptionPane.showOptionDialog(ResultsPanel.this, "File '" + f.getName() + "' not recognised as an " +fileType+" file.\n"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -