📄 simanngui.java
字号:
/* Applet to solve the Traveling Salesman Problem
* Copyright (C) 2002 Tobias Oetzel (Tobias.Oetzel@gmx.de)
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your option)
* any later version. This program is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
// Simulated Annealing Gui
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.text.*;
public class simanngui
{
private JPanel MyContainer;
private JLabel NeighbourhoodLabel,
TemperatureLabel,
CoolingRateLabel,
InnerLoopBreakLabel;
private JComboBox NeighbourhoodComboBox,
TemperatureComboBox,
CoolingRateComboBox,
InnerLoopBreakComboBox;
protected String Neighbourhood,
Temperature,
CoolingRate,
InnerLoopBreak;
public simanngui(JPanel S)
{
MyContainer=S;
}
public void InitContent()
{
Font MyFont = new Font("System",0,12);
NeighbourhoodLabel = new JLabel();
NeighbourhoodLabel.setVisible(false);
NeighbourhoodLabel.setText("Nachbarschaft");
NeighbourhoodLabel.setBounds(25,68,150,15);
NeighbourhoodLabel.setFont(MyFont);
NeighbourhoodComboBox = new JComboBox();
NeighbourhoodComboBox.setBackground(Color.white);
NeighbourhoodComboBox.setVisible(false);
NeighbourhoodComboBox.setEditable(false);
NeighbourhoodComboBox.setBounds(25,84,200,21);
NeighbourhoodComboBox.setFont(MyFont);
NeighbourhoodComboBox.addItem("Transposition");
NeighbourhoodComboBox.addItem("2-opt");
Neighbourhood="2-opt";
NeighbourhoodComboBox.setSelectedIndex(1);
NeighbourhoodComboBox.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
Neighbourhood=(String)NeighbourhoodComboBox.getSelectedItem();
}
});
TemperatureLabel = new JLabel();
TemperatureLabel.setVisible(false);
TemperatureLabel.setText("Anfangstemperatur");
TemperatureLabel.setBounds(25,116,150,15);
TemperatureLabel.setFont(MyFont);
TemperatureComboBox = new JComboBox();
TemperatureComboBox.setBackground(Color.white);
TemperatureComboBox.setEditable(true);
TemperatureComboBox.setVisible(false);
TemperatureComboBox.setBounds(25,132,200,21);
TemperatureComboBox.setFont(MyFont);
TemperatureComboBox.addItem("1");
TemperatureComboBox.addItem("5");
TemperatureComboBox.addItem("10");
TemperatureComboBox.addItem("15");
TemperatureComboBox.addItem("20");
TemperatureComboBox.addItem("50");
TemperatureComboBox.addItem("100");
TemperatureComboBox.addItem("150");
Temperature="10";
TemperatureComboBox.setSelectedIndex(2);
TemperatureComboBox.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
Temperature=(String)TemperatureComboBox.getSelectedItem();
}
});
CoolingRateLabel = new JLabel();
CoolingRateLabel.setText("K黨lfaktor");
CoolingRateLabel.setVisible(false);
CoolingRateLabel.setBounds(25,164,150,15);
CoolingRateLabel.setFont(MyFont);
CoolingRateComboBox = new JComboBox();
CoolingRateComboBox.setBackground(Color.white);
CoolingRateComboBox.setEditable(true);
CoolingRateComboBox.setVisible(false);
CoolingRateComboBox.setBounds(25,180,200,21);
CoolingRateComboBox.setFont(MyFont);
CoolingRateComboBox.addItem("0.90");
CoolingRateComboBox.addItem("0.95");
CoolingRateComboBox.addItem("0.96");
CoolingRateComboBox.addItem("0.97");
CoolingRateComboBox.addItem("0.98");
CoolingRateComboBox.addItem("0.99");
CoolingRateComboBox.addItem("0.995");
CoolingRateComboBox.addItem("0.999");
CoolingRate="0.999";
CoolingRateComboBox.setSelectedIndex(7);
CoolingRateComboBox.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
CoolingRate=(String)CoolingRateComboBox.getSelectedItem();
}
});
InnerLoopBreakLabel = new JLabel();
InnerLoopBreakLabel.setText("Innere Wiederholungen");
InnerLoopBreakLabel.setVisible(false);
InnerLoopBreakLabel.setBounds(25,212,150,15);
InnerLoopBreakLabel.setFont(MyFont);
InnerLoopBreakComboBox = new JComboBox();
InnerLoopBreakComboBox.setBackground(Color.white);
InnerLoopBreakComboBox.setEditable(true);
InnerLoopBreakComboBox.setVisible(false);
InnerLoopBreakComboBox.setBounds(25,228,200,21);
InnerLoopBreakComboBox.setFont(MyFont);
InnerLoopBreakComboBox.addItem("1");
InnerLoopBreakComboBox.addItem("5");
InnerLoopBreakComboBox.addItem("10");
InnerLoopBreakComboBox.addItem("50");
InnerLoopBreakComboBox.addItem("100");
InnerLoopBreakComboBox.addItem("500");
InnerLoopBreakComboBox.addItem("1000");
InnerLoopBreak="5";
InnerLoopBreakComboBox.setSelectedIndex(1);
InnerLoopBreakComboBox.addActionListener(new ActionListener ()
{
public void actionPerformed(ActionEvent e)
{
InnerLoopBreak=(String)InnerLoopBreakComboBox.getSelectedItem();
}
});
MyContainer.add(NeighbourhoodLabel);
MyContainer.add(NeighbourhoodComboBox);
MyContainer.add(TemperatureLabel);
MyContainer.add(TemperatureComboBox);
MyContainer.add(CoolingRateLabel);
MyContainer.add(CoolingRateComboBox);
MyContainer.add(InnerLoopBreakLabel);
MyContainer.add(InnerLoopBreakComboBox);
}
public void ShowControls(boolean visible)
{
if (visible)
{
NeighbourhoodLabel.setVisible(true);
NeighbourhoodComboBox.setVisible(true);
TemperatureLabel.setVisible(true);
TemperatureComboBox.setVisible(true);
CoolingRateLabel.setVisible(true);
CoolingRateComboBox.setVisible(true);
InnerLoopBreakLabel.setVisible(true);
InnerLoopBreakComboBox.setVisible(true);
}
else
{
NeighbourhoodLabel.setVisible(false);
NeighbourhoodComboBox.setVisible(false);
TemperatureLabel.setVisible(false);
TemperatureComboBox.setVisible(false);
CoolingRateLabel.setVisible(false);
CoolingRateComboBox.setVisible(false);
InnerLoopBreakLabel.setVisible(false);
InnerLoopBreakComboBox.setVisible(false);
}
}
public void HandleControls(boolean enabled)
{
if (enabled)
{
NeighbourhoodComboBox.setEnabled(true);
TemperatureComboBox.setEnabled(true);
CoolingRateComboBox.setEnabled(true);
InnerLoopBreakComboBox.setEnabled(true);
}
else
{
NeighbourhoodComboBox.setEnabled(false);
TemperatureComboBox.setEnabled(false);
CoolingRateComboBox.setEnabled(false);
InnerLoopBreakComboBox.setEnabled(false);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -