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

📄 sliderpanel.java

📁 eclispse下运行 模拟退火算法的java源代码
💻 JAVA
字号:
package org.theblueplanet.annealing.ui;

import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;

import javax.swing.border.EtchedBorder;

import org.theblueplanet.annealing.AnnealingScheme;

/**
 *  Container class for the JSliders. This Component lies on the AnnealingPanel
 *
 * @see org.theblueplanet.annealing.ui.AnnealingPanel
 * @see org.theblueplanet.annealing.ui.CoolingRateSlider
 * @see org.theblueplanet.annealing.ui.ToleranceSlider
 * @see org.theblueplanet.annealing.ui.NIterationsSlider
 * @see org.theblueplanet.annealing.ui.TemperatureSlider
 *
 * @author     Charles M間nin
 * @since    October 29, 2001
 * @version    1.0
 */
public class SliderPanel extends JPanel {
    private TemperatureSlider tSlider;
    private CoolingRateSlider rSlider;
    private NIterationsSlider iSlider;
    private ToleranceSlider tolSlider;
    private AnnealingScheme annealingScheme;

    private static String TITLE              = "Annealing Scheme Selector";
    private static String temperatureLabel   = "Starting Temperature (Log)";
    private static String coolingRateLabel   = "Cooling rate";
    private static String iterationsLabel    = "Number of iterations";
    private static String toleranceLabel     = "Fractional tolerance (Log)";

    /**
     *  Constructor for the SliderPanel object
     *
     * @param  parent           The AnnealingPanel that instantiated the SliderPanel
     * @param  annealingScheme  The Object that encapsulates the annealing parameters
     */
    public SliderPanel(AnnealingPanel parent, AnnealingScheme annealingScheme) {
        super();
        this.annealingScheme = annealingScheme;
        init(parent);
    }

    /**
     *  resets all sliders to the AnnealingScheme values
     *
     * @param  annealingScheme  The Object that encapsulates the annealing parameters
     */
    public void resetValues(AnnealingScheme annealingScheme) {
        annealingScheme.setDefaultValues();
        tSlider.setValue((int) Math.round(Math.log(annealingScheme.getTemperature()) / Math.log(10)));
        rSlider.setValue(annealingScheme.getCoolingRate());
        iSlider.setValue(annealingScheme.getNIterations());
        tolSlider.setValue((int) Math.round(Math.log(annealingScheme.getTolerance()) / Math.log(10)));
    }

    /**
     *  Instantiates JSliders
     *
     * @param  parent  The AnnealingPanel that instantiated the SliderPanel
     */
    private void init(AnnealingPanel parent) {
        tSlider   = new TemperatureSlider(parent, annealingScheme);
        rSlider   = new CoolingRateSlider(parent, annealingScheme);
        iSlider   = new NIterationsSlider(parent, annealingScheme);
        tolSlider = new ToleranceSlider(parent, annealingScheme);
        display();
    }

    /**
     *  Constructs JPanel
     */
    private void display() {
        this.setLayout(new GridLayout(5, 2));
        this.add(new JLabel(TITLE, JLabel.RIGHT));
        this.add(new JLabel(""));
        this.add(new JLabel(temperatureLabel, JLabel.LEFT));
        this.add(tSlider);
        this.add(new JLabel(coolingRateLabel, JLabel.LEFT));
        this.add(rSlider);
        this.add(new JLabel(iterationsLabel, JLabel.LEFT));
        this.add(iSlider);
        this.add(new JLabel(toleranceLabel, JLabel.LEFT));
        this.add(tolSlider);
        this.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
    }

}

⌨️ 快捷键说明

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