¡Urgente! ! Código fuente del editor de formas basado en Java
/*
* Paint.java
*
*Creado el 9 de mayo de 2008 a las 10:10 a. m.
*/
Importar Java .awt .gráficos
Importar Java .awt . /p>
Importar Java . ArrayList
Importar Javax . .swing.jpanel;
/**
*
* @author uestcfb
*/
La clase pública Paint extiende JFrame {
List<Shape>list = new ArrayList <Shape>();
Punto final privado;
clase PaintArea extiende JPanel {
Lista<Shape>List;
Área de pintura pública(List<Shape>List){
this.list = list
}
@override
Componente de pintura en blanco protegido (gráfico g) {
super componente de pintura (g);
Para (forma s: lista){
Pintar (g). );
}
}
}
tipo de forma privada forma seleccionada = tipo de forma valores()[0];
/**Crear un nuevo dibujo de formulario*/
Pintura pública(){
componentes init();
} p>
/**
* Llame a esto desde el método constructor para inicializar el formulario.
*Advertencia: No modifique este código. El contenido de este método siempre es
* regenerado por el editor de formularios.
*/
@SuppressWarnings("unchecked")
//<Estado predeterminado del pliegue del editor = "collapsed" desc = "Generar código" & gt
Private void initComponents() {
jcombobox 1 = nuevo javax . jcombobox(tipo de forma . valores());
jPanel1 = nueva pintura área (lista);
jle bel 1 = nuevo javax .jlabel();
jlabel 1 = nuevo javax . > p>
setDefaultCloseOperation(javax . swing . constantes de ventana . exit _ ON _ CLOSE);
jcombobox 1 .
acción de anulación pública realizada(Java . awt . evento . acción evento evt){
jcombobox 1 acción realizada(evt);
}
} ) ;
jpanel 1 . set border(javax . swing . border factory . createetchedborder());
jpanel 1 . addmouse listener(new Java . awt . event . mouse adaptor( ) {
ratón vacío público presionado (Java . awt . evento . evento del mouse evt){
jpanel 1 mouse presionado (evt);
} p >
mouse public void liberado(Java . awt . event . mouse event evt){
jpanel 1 mouse liberado(evt);
}
});
jpanel 1. addmousemotionlistener(new Java . awt . event . mousemotionadapter(){
ratón vacío público arrastrado (Java . awt . event . mouse event evt){
jpanel 1 mousedraged(evt);
}
});
diseño de grupo javax swing . javax . swing . diseño de grupo (
jpanel 1);
diseño de conjunto jpanel 1 (diseño de jpanel 1);
diseño de jpanel 1 (. diseño jpanel 1. createparallelgroup(
javax . s
ala . alineación del grupo . addGap(0, 445,
Short.MAX_VALUE));
diseño de jpanel 1 . setverticalgroup(diseño de jpanel 1 . createparallelgroup(
javax . swing . group diseño . alineación . addGap(0, 388,
Short. MAX_VALUE));
jle bel 1 . /p>
jle bel 1 . settooltiptext(getWarningString());
jLabel1.setText("Seleccionar forma");
diseño de grupo javax. javax . swing .diseño de grupo(
getContentPane());
getContentPane()
Diseño
.setHorizontalGroup(diseño<. /p>
.createParallelGroup(
javax . swing . diseño de grupo . alineación . líder)
.Agregar grupo(
Diseño
. createSequenceGap()
. addContainerGap()
. createParallelGroup(
javax. swing. diseño de grupo. alineación. principal)
.Agregar grupo(
Diseño
.Crear grupo de secuencia()
.Agregar componente(
jPanel1,
javax.swing.grouplayout.default_SIZE,
javax.swing.grouplayout.default_SIZE,
short.max)
.addContainerGap())
. AddGroup(
javax . swing . diseño de grupo . alineación . trailing,
Diseño
. Crear SequenceGroup()
. Agregar componente (
jlebel1,
javax.swing.grouplayout.preferred_SIZE,
134,
javax.swing. diseño de grupo. preferido _ TAMAÑO)
Agregar espacios (
142,
142,
142))) p>
. AddGap(
Diseño
. Crear SequenceGroup()
. addGap(98, 98, 98)
.
Agregue componente (
jLabel1,
javax.swing.grouplayout.preferred_SIZE,
103,
javax.swing. diseño de grupo. preferido _ TAMAÑO)
. addPreferredGap(
javax . swing . estilo de diseño . ubicación de componentes . relacionado)
. Agregue componente (
jComboBox1,
javax.swing.grouplayout.preferred_SIZE,
159,
javax.swing. diseño de grupo. preferido _ TAMAÑO)
. addContainerGap(105, short. MAX_VALUE)));
Diseño
. setVerticalGroup(diseño
. createParallelGroup(
javax . swing . diseño de grupo . alineación . líder)
. add group(
javax . swing .diseño de grupo .alineación final,
Diseño
. Crear grupo de secuencia()
. agregar grupo(
diseño
. createParallelGroup(
javax . swing . diseño de grupo . alineación . línea base)
. agregar componente(
jComboBox1,
javax.swing.grouplayout.preferred_SIZE,
21,
javax.swing.grouplayout preferente_SIZE)
p>
. Agregar componente(
jLabel1,
javax.swing.grouplayout.preferred_SIZE,
18,
javax . swing . diseño de grupo . preferido _ TAMAÑO))
addPreferredGap(
javax . swing . estilo de diseño . ubicación de componentes . relacionado)
. (
jPanel1,
javax.swing.grouplayout.default_SIZE,
javax.swing.grouplayout .default_SIZE,
short.maximum )
. addPreferredGap(
javax . swing . estilo de diseño . ubicación de componentes . relacionado)
.
Agregue componente (
jlebel1,
javax.swing.grouplayout.preferred_SIZE,
35,
javax.swing. diseño de grupo. preferido _ TAMAÑO)
. addContainerGap()));
pack();
}//& lt;/editor-fold & gt;
acción privada de jcombobox void realizada 1 (Java . awt . evento . evento de acción evt){
forma seleccionada =(tipo de forma)jcombobox 1 . getselecteditem();
jle bel 1 . ());
}
Forma actual = null
private void jpanel 1 mouse liberado(Java . awt . event . mouse event evt){ p>
// TODO agrega código de procesamiento aquí:
start = null
end = null
}
private void jpanel 1 mousedraged(Java . awt . event . mouse event evt){
// TODO agrega código de procesamiento aquí:
if (start! = null) {
end = evt . get point();
list.remove(current);
if (selectedShape == ShapeType. Rectángulo) {
actual = nuevo rectángulo (inicio, fin);
} else if (forma seleccionada == tipo de forma. círculo) {
actual = nuevo círculo (inicio, fin
}
if (actual!= nulo) {
list.add(actual);
}
Sistema .out.println(inicio +","+fin);
sistema fuera . println("-");
repintar(); }
}
privado void jpanel 1 mouse presionado(Java . awt . event . mouse event evt){
start = evt .
end = evt . get point();
if (forma seleccionada == Tipo de forma. Rectángulo){
actual = nuevo rectángulo(inicio, fin);
} else if(forma seleccionada == tipo de forma.
círculo) {
actual = nuevo círculo (inicio, fin);
}
if (actual! = nulo) {
list.add(actual);
}
}
/**
* @param args
*Parámetros de línea de comando
*/
Public static void main(String args[]) {
Cola de eventos Java awt . Runnable(){
Public void Runnable(){
Nueva pintura();
}
});
}
Tipos de formas de enumeración {
Rectángulo, círculo;
}
forma de clase abstracta {
Pintura en blanco protegida abstracta (gráfico g);
}
clase rectángulo forma extendida {
Punto p 1;
Punto p2;
Rectángulo (punto p1, punto p2) {
este p 1 = p 1;
este.p2 = p2
.}
@overlay
Pintura en blanco protegida (gráfico g) {
g. drawRect((int) p1.getX(), (int ) p1.getY(), (int) (p2.getX() - p1
.getX()), (int)(p2 . gety()-p 1. gety());
}
}
Forma extendida en forma de círculo {
Punto p 1 ;
Punto p2;
Círculo (punto p1, punto p2) {
este p 1 = p 1;
este .p2 = p2
}
@overlay
Pintura en blanco protegida (gráficos g) {
gráficos 2d G2 =( gráficos 2d)g;
doble x 1 = p 1 . getx();
doble y 1 = p 1
doble x2 = p2 . doble y2 = p2 . gety();
g2.drawOval((int) x1, (int) y1, (int) x2, (int)y2);
}<. /p>
}
//Declaración de variable: no modificar
private javax . jlabel jle bel 1;
private javax . . jcombobox jcombobox 1;
javax privado .jlabel jlabel 1;
javax privado .jpanel jpanel 1;
Punto privado inicio=null
}