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

📄 configuracioncomp.java

📁 This application can make a comparative analysis of two images using different methods: Logical
💻 JAVA
字号:
package svd;

import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JCheckBoxMenuItem;

import miFrame.MiPrograma;

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ItemListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*******************************************************************************
 * Clase que sirve de Listener para un objeto JCheckBoxMenuItem de Configuraci髇
 * de la Comparaci髇 entre dos im醙enes.
 ******************************************************************************/
public class ConfiguracionComp extends JDialog implements ItemListener {

    /***************************************************************************
     * Variables privadas globales: - serialVersionUID: entero cte. para evitar
     * accesos concurrentes. - confComp: JCheckBoxMenuItem que contiene el
     * Listener.
     **************************************************************************/
    private static final long serialVersionUID = 1L;

    private JCheckBoxMenuItem confComp;

    /***************************************************************************
     * Constructor con par醡etros que crea un JDialog y lo instancia con
     * diversos Components (y les asigna Listener's), haci閚dolo definitivamente
     * no redimensionable.
     * 
     * @param padre
     *            JCheckBoxMenuItem que referencia al objeto que contiene el
     *            Listener.
     **************************************************************************/
    public ConfiguracionComp(JCheckBoxMenuItem padre) {
        super(MiPrograma.miFrame, "Configuraci髇 de Comparaci髇 por SVD");
        confComp = padre;
        this.setBounds(200, 120, 320, 125);
        this.addWindowListener(new BotonX());
        JTextField Text1 = new JTextField(3);
        Text1.selectAll();
        Text1.setText("32");
        JTextField Text2 = new JTextField(3);
        Text2.selectAll();
        Text2.setText("32");
        JTextField Text3 = new JTextField(3);
        Text3.selectAll();
        Text3.setText("11");
        JButton Boton = new JButton("  Aceptar  ");
        this.add(new JLabel("Tama駉 de ventanas en la imagen: "));
        this.add(Text1);
        this.add(new JLabel("X"));
        this.add(Text2);
        this.add(new JLabel("             "));
        this.add(new JLabel("Precisi髇 (m醲. = 1): "));
        this.add(Text3);
        this.add(new JLabel("             "));
        this.add(Boton);
        this.setLayout(new FlowLayout());
        this.setResizable(false);

        Text1.addActionListener(new Valores(Text1, Text2, Text3));
        Text2.addActionListener(new Valores(Text1, Text2, Text3));
        Text3.addActionListener(new Valores(Text1, Text2, Text3));
        Boton.addActionListener(new Valores(Text1, Text2, Text3));
    }

    /***************************************************************************
     * M閠odo llamado cuando se produce una alteraci髇 en el JCheckBoxMenuItem.
     * Hace o no visible el JDialog.
     * 
     * @param evt
     *            Evento de tipo ItemEvent que se provoca cuando cambia el
     *            JCheckBoxMenuItem.
     **************************************************************************/
    public void itemStateChanged(ItemEvent evt) {
        if (evt.getStateChange() == 1) {
            this.setVisible(true);
        } else
            this.setVisible(false);
    }

    /***************************************************************************
     * Clase interna que hace funcional el JDialog.
     **************************************************************************/
    class BotonX extends WindowAdapter {

        /***********************************************************************
         * Hace que al pulsarse el Boton X del JDialog, adem醩 de cerrarse la
         * ventana, se desactive el JCheckBoxMenuItem.
         * 
         * @param evt:
         *            Recibe el evento WindowEvent generado al producirse un
         *            cambio o alteraci髇 en la ventana.
         **********************************************************************/
        public void windowClosing(WindowEvent evt) {
            confComp.setState(false);
        }
    }
}

/*******************************************************************************
 * Clase interna encargada de trabajar con los valores recibidos y validarlos.
 ******************************************************************************/
class Valores implements ActionListener {

    /***************************************************************************
     * Variables globales: - text1: JTextField que se encuentra en el JDialog. -
     * text2: JTextField que se encuentra en el JDialog. - text3: JTextField que
     * se encuentra en el JDialog.
     **************************************************************************/
    JTextField text1, text2, text3;

    /***************************************************************************
     * Constructor con par醡etros que instancia las variables globales.
     * 
     * @param s1:
     *            JTextField de la longitud de las ventanas.
     * @param s2:
     *            JTextField de la anchura de las ventanas.
     * @param s3:
     *            JTextField del n鷐ero de SVD considerados.
     **************************************************************************/
    public Valores(JTextField s1, JTextField s2, JTextField s3) {
        text1 = s1;
        text2 = s2;
        text3 = s3;
    }

    /***************************************************************************
     * Cuando se pulsa el bot髇 del JDialog o se da a Intro en los JTextField se
     * genera un evento y se ejecuta el c骴igo de este m閠odo. Se validan los
     * errores, y si no hay se muestra el nuevo Resultado de la Comparaci髇.
     **************************************************************************/
    public void actionPerformed(ActionEvent evt) {
        int k = no_errores();
        if (k == 0) {
            int larg = (new Integer(text1.getText())).intValue();
            int anch = (new Integer(text2.getText())).intValue();
            int valSin = (new Integer(text3.getText())).intValue();
            if (valSin <= Math.min(larg, anch)) {

                if (AbrirImagenAComp.matrizA != null) {
                    TratoMatrizA tmA = new TratoMatrizA();
                    AbrirImagenAComp.matrizSVD = tmA.obtenGraf(larg, anch,
                            valSin);
                }

                else {
                    JOptionPane.showMessageDialog(MiPrograma.miFrame,
                            "No ha cargado la imagen A", "Cargue la imagen A",
                            JOptionPane.ERROR_MESSAGE);
                }

                if (AbrirImagenBComp.matrizB != null) {

                    TratoMatrizB tmB = new TratoMatrizB();
                    AbrirImagenBComp.matrizSVD = tmB.obtenGraf(larg, anch,
                            valSin);
                    FuncionComp fc = new FuncionComp(
                            AbrirImagenAComp.matrizSVD,
                            AbrirImagenBComp.matrizSVD);
                    ResultadoComp.cadena = fc.compara();

                    ResultadoComp.resComparac.setState(false);
                    ResultadoComp.resComparac
                            .removeItemListener(ResultadoComp.eliminar);
                    ResultadoComp.resComparac
                            .addItemListener(new ResultadoComp());
                    ResultadoComp.resComparac.setState(true);
                } else
                    JOptionPane.showMessageDialog(MiPrograma.miFrame,
                            "No ha cargado la imagen B", "Cargue la imagen B",
                            JOptionPane.ERROR_MESSAGE);
            } else
                JOptionPane
                        .showMessageDialog(
                                MiPrograma.miFrame,
                                "La precisi髇 debe ser menor o igual al m韓imo horizontal\n                          "
                                        + "o vertical de la ventana",
                                "Rango No Permitido", JOptionPane.ERROR_MESSAGE);
        } else if (k == -1)
            JOptionPane
                    .showMessageDialog(
                            MiPrograma.miFrame,
                            "Los tama駉s de ventana y la precisi髇 han de ser N

⌨️ 快捷键说明

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