📄 checkboxcontrols.java
字号:
&& ! m_states[CBC_SEED_FROM_ELASTIC_NET] && ! m_states[CBC_SEED_FROM_LOCAL_OPTIMIZATION] && ! m_states[CBC_SEED_FROM_DELAUNEY_TRIANGULATION] ) { m_states[CBC_SEED_FROM_RANDOM_POINTS] = true; m_boxes[CBC_SEED_FROM_RANDOM_POINTS].setState(true); } } } private static class ActionConfigRandomPointsSeeds implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_SEED_FROM_RANDOM_POINTS] = m_boxes[CBC_SEED_FROM_RANDOM_POINTS].getState();/*** If we've tried to turn off all seeds, turn random seeds on again.*/ if ( ! m_states[CBC_SEED_FROM_RANDOM_POINTS] && ! m_states[CBC_SEED_FROM_MINIMAL_SPANNING_TREE] && ! m_states[CBC_SEED_FROM_ELASTIC_NET] && ! m_states[CBC_SEED_FROM_LOCAL_OPTIMIZATION] && ! m_states[CBC_SEED_FROM_DELAUNEY_TRIANGULATION] ) { m_states[CBC_SEED_FROM_RANDOM_POINTS] = true; m_boxes[CBC_SEED_FROM_RANDOM_POINTS].setState(true); } } } private static class ActionConfigDrawAllAlways implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_DEBUG_DRAW_ALL_ALWAYS] = m_boxes[CBC_DEBUG_DRAW_ALL_ALWAYS].getState(); } } private static class ActionConfigDrawAllOnce implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_DEBUG_DRAW_ALL_ONCE] = m_boxes[CBC_DEBUG_DRAW_ALL_ONCE].getState(); } } private static class ActionConfigDoDebugPrintouts implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_DEBUG_PRINTOUTS] = m_boxes[CBC_DEBUG_PRINTOUTS].getState(); } } private static class ActionConfigDoVisualDebugging implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_DEBUG_VISUAL_WINDOWS] = m_boxes[CBC_DEBUG_VISUAL_WINDOWS].getState(); } } private static class ActionConfigDoProgressCounters implements ItemListener { public void itemStateChanged(ItemEvent event) { m_states[CBC_DEBUG_PROGRESS_COUNTERS] = m_boxes[CBC_DEBUG_PROGRESS_COUNTERS].getState(); } } private static ItemListener [] m_itemListeners = { new ActionConfigCircular(), new ActionConfigEvenGrid(), new ActionConfigFractalLayout(), new ActionConfigNestedGrid(), new ActionConfigPolySpiral(), new ActionConfigRandomLayout(), new ActionConfigPerturbLayout(), new ActionConfigCyclicCrossover(), new ActionConfigEdgePreservingCrossover(), new ActionConfigOrderedCrossover(), new ActionConfigPartialMatchCrossover(), new ActionConfigRollingCrossover(), new ActionConfigInverOver(), new ActionConfigDewrinkler(), new ActionConfigDisorderedSlide(), new ActionConfigInvert(), new ActionConfigMove(), new ActionConfigOptimizeNodesAndEdgesNearAPoint(), new ActionConfigOptimizeNodesAndEdgesNearEveryCity(), new ActionConfigOptimizeNodesNearAPoint(), new ActionConfigOptimizeNodesNearEveryCity(), new ActionConfigOrderedSlide(), new ActionConfigPermuteASublist(), new ActionConfigPermuteCutsNearAPoint(), new ActionConfigPermuteCutsNearEveryCity(), new ActionConfigPermuteSingles(), new ActionConfigPermuteSublists(), new ActionConfigQuasiQuickSort(), new ActionConfigQuasiShellSortInverter(), new ActionConfigQuasiShellSortSwapper(), new ActionConfigRandomLoopCuts(), new ActionConfigRandomLoopNodes(), new ActionConfigRandomLoopNodesAndEdges(), new ActionConfigSmoother(), new ActionConfigSnowPlow(), new ActionConfigSnowPlowSqueezebox(), new ActionConfigSwap(), new ActionConfigAllopatricDemes(), new ActionConfigAnneal(), new ActionConfigCoevolveCroppers(), new ActionConfigSingleElitism(), new ActionConfigTabu(), new ActionConfigRouletteWheel(), new ActionConfigStrongTourney(), new ActionConfigWeakTourney(), new ActionConfigDelauneyTriangulationSeeds(), new ActionConfigElasticNetSeeds(), new ActionConfigLocalOptimizationSeeds(), new ActionConfigMinimalSpanningTreeSeeds(), new ActionConfigRandomPointsSeeds(), new ActionConfigDrawAllAlways(), new ActionConfigDrawAllOnce(), new ActionConfigDoDebugPrintouts(), new ActionConfigDoVisualDebugging(), new ActionConfigDoProgressCounters(), }; public ItemListener [] getListeners() { return m_itemListeners; } public static void loadSettings() { for (int i = 0; i < CBC_NUMBER_OF_CHECKBOXES; i++) { m_boxes[i].setState(m_states[i]); } m_skillsPanel.repaint(); } public static void loadDefaultSettings() { for (int i = 0; i < CBC_NUMBER_OF_CHECKBOXES; i++) { m_states[i] = m_defaults[i]; } } public static void saveSettings() { for (int i = 0; i < CBC_NUMBER_OF_CHECKBOXES; i++) { m_states[i] = m_boxes[i].getState(); } } public static void disable() { for (int i = 0; i < CBC_NUMBER_OF_CHECKBOXES; i++) { m_boxes[i].setEnabled(false); }/*** We have a few exceptions that are always enabled. We want more of these!*/ m_boxes[CBC_DEBUG_DRAW_ALL_ONCE].setEnabled(true); m_boxes[CBC_DEBUG_DRAW_ALL_ALWAYS].setEnabled(true); m_boxes[CBC_DEBUG_PRINTOUTS].setEnabled(true); m_boxes[CBC_DEBUG_VISUAL_WINDOWS].setEnabled(true); m_boxes[CBC_DEBUG_PROGRESS_COUNTERS].setEnabled(true); } public static void enable() { for (int i = 0; i < CBC_NUMBER_OF_CHECKBOXES; i++) { m_boxes[i].setEnabled(true); } } public static boolean getState(int s) { return m_states[s]; } public static void setState(int s, boolean b) { m_states[s] = b; m_boxes[s].setState(b); } public static void heuristicsRandomize() { MersenneTwister mt = MersenneTwister.getTwister(); for ( int i = CBC_FIRST_HEURISTIC; i <= CBC_LAST_HEURISTIC; i++ ) { setState( i, mt.nextBoolean() ); } } public static void heuristicsOff() { for ( int i = CBC_FIRST_HEURISTIC; i <= CBC_LAST_HEURISTIC; i++ ) { setState( i, false ); } } public static void heuristicsOn() { for ( int i = CBC_FIRST_HEURISTIC; i <= CBC_LAST_HEURISTIC; i++ ) { setState( i, true ); } } public ItemListener listen(int index) { return m_itemListeners[index]; } public static void setup() { m_skillsFrame = new TravellerFrame(SKILLS_NAME); //m_skillsFrame.setVisible(true); //m_skillsFrame.invalidate(); m_skillsPanel = new EdgedPanel(); m_skillsPanel.setBackground(TravellerColors.BAR_COLOR); m_skillsPanel.setForeground(TravellerColors.BAR_TEXT); GridBagLayout gbl = new GridBagLayout(); m_skillsPanel.setLayout(gbl); m_skillsPanel.setVisible(true); // create a reusable constraints bag GridBagConstraints gbc = new GridBagConstraints(); // Set some values in the bag gbc.weightx = 1.0; gbc.weighty = 0.0; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.anchor = GridBagConstraints.CENTER; gbc.gridwidth = GridBagConstraints.REMAINDER; // add a label // Font skillsLabelFont = new Font("SansSerif",Font.BOLD,12); Font skillsLabelFont = new Font("SansSerif",Font.PLAIN,15); Label skillsLabel = new Label("功能选项",Label.CENTER); skillsLabel.setBackground(TravellerColors.BAR_COLOR); skillsLabel.setForeground(TravellerColors.BAR_TEXT); skillsLabel.setFont(skillsLabelFont); Utility.addToBag ( m_skillsPanel, skillsLabel, gbc, gbl ); gbc.fill = GridBagConstraints.NONE;/*** Create a font to give us control over text point size; the default** eats too much space.*/ // Font tfont = new Font("SansSerif",Font.BOLD,10); Font tfont = new Font("SansSerif",Font.PLAIN,12);/*** Loop through the checkboxes, laying out labels and checkboxes in even** columns.*/ int tallestColumn = ( CBC_NUMBER_OF_CHECKBOXES + HOW_MANY_COLUMNS - 1 ) / HOW_MANY_COLUMNS; int missingEntries = ( tallestColumn * HOW_MANY_COLUMNS ) - CBC_NUMBER_OF_CHECKBOXES; int shortestColumn = tallestColumn - missingEntries; for (int n = 0; n < CBC_NUMBER_OF_CHECKBOXES; n++) { int currentCheckBox = ( HOW_MANY_COLUMNS < 2 ) ? n : ( n < ( shortestColumn * HOW_MANY_COLUMNS ) ) ? ( ( ( n % HOW_MANY_COLUMNS ) * tallestColumn ) + ( n / HOW_MANY_COLUMNS ) ) : ( ( ( ( n - (shortestColumn * HOW_MANY_COLUMNS) ) % ( HOW_MANY_COLUMNS - 1 ) ) * tallestColumn ) + ( shortestColumn + ( ( n - (shortestColumn * HOW_MANY_COLUMNS) ) / ( HOW_MANY_COLUMNS - 1 ) ) ) ) ;/*** Add a checkbox label.*/ gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.EAST; Label clabel = new Label(m_labels[currentCheckBox], Label.RIGHT); clabel.setFont(tfont); Utility.addToBag( m_skillsPanel, clabel, gbc, gbl );/*** Add a checkbox, it aligns vertically with the checkbox above it.*/ gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.CENTER; m_boxes[currentCheckBox] = new Checkbox("",m_defaults[currentCheckBox]); m_boxes[currentCheckBox].setBackground(TravellerColors.BAR_COLOR); m_boxes[currentCheckBox].setForeground(TravellerColors.BAR_TEXT); m_boxes[currentCheckBox].setFont(tfont); m_boxes[currentCheckBox].addItemListener(m_itemListeners[currentCheckBox]); Utility.addToBag( m_skillsPanel, m_boxes[currentCheckBox], gbc, gbl );/*** Add a REMAINDER horizontal space at the end of each row, to keep the** previous checkbox column next to its labels, and to terminate the row** in this horizontal flow layout.*/ if (/*** If this is either the last checkbox of all or the last one in the** current row, wrap the line.*/ ( n == ( CBC_NUMBER_OF_CHECKBOXES - 1 ) ) || ( HOW_MANY_COLUMNS == 1 ) || ( ( n < ( HOW_MANY_COLUMNS * shortestColumn ) ) && ( n % HOW_MANY_COLUMNS ) == ( HOW_MANY_COLUMNS - 1 ) ) || ( ( n >= ( HOW_MANY_COLUMNS * shortestColumn ) ) && ( ( ( n - ( HOW_MANY_COLUMNS * shortestColumn ) ) % ( HOW_MANY_COLUMNS - 1 ) ) == ( HOW_MANY_COLUMNS - 2 ) ) ) ) { gbc.gridwidth = GridBagConstraints.REMAINDER; Label hspace_2 = new Label(); hspace_2.setFont(tfont); Utility.addToBag( m_skillsPanel, hspace_2, gbc, gbl ); } } // add message at bottom gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.CENTER; Label usage = new Label( "[ \"*\" 表示 \"尚未实现\" ]", Label.CENTER ); usage.setFont(tfont); Utility.addToBag ( m_skillsPanel, usage, gbc, gbl ); m_skillsFrame.add("Center", m_skillsPanel); m_skillsFrame.pack(); m_skillsFrame.invalidate(); m_skillsFrame.setVisible(true); m_skillsFrame.validate(); m_skillsFrame.repaint(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -