📄 configuracioncomp.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 + -