Un diccionario inglés-chino escrito en Java
Permíteme comenzar con esto: hay un error en tu código, está en la parte inferior, debería haberlo superado, no es un gran problema.
Si quieres aprender bien Java, puedes seguir este código y agregar mis anotaciones para comprenderlo, pero no aprendas la forma en que está escrito este código ni te conviertas en un hábito. Este código es básicamente correcto. pero está mal. Algunas cuestiones de sentido común, si desarrolla estos malos hábitos, tendrán un impacto negativo en la programación futura.
Aprendí Java en inglés, por lo que es posible que algunas de las anotaciones no sean fluidas, pero hice lo mejor que pude. Algunas anotaciones son un poco largas, por lo que puedes ejecutarlas después de copiarlas en el compilador y editarlas un poco. El código puede ejecutarse sin ningún problema.
----------------------------------------
import javax.swing.*; //Se utiliza para crear interfaces gráficas, como ventanas, tablas, botones, etc.
import java.awt.*; //La misma función que la anterior, pero ya no se usa awt donde se puede usar swing
import java.awt.event.* ; //Gestión y control de eventos
import java.sql.*; //Declaraciones y operaciones de bases de datos
import java.lang.System;//No sé nada de esto.
/*Los siguientes 6 son inútiles, están escritos exclusivamente para asustar a la gente*/
import javax.swing.tree.*;
import javax. swing.event.* ;
importar java.util.*;
importar javax.swing.border.*;
importar javax.swing.table. *;
import java.lang.String.*;
clase Mywindow extiende JFrame implementa ActionListener//Esta clase implementa actionlistener, lo que significa que puede realizar las tareas de actionListener por sí misma
{
JTextField txf=new JTextField(20); //Crea un cuadro de edición de texto con una longitud de 20 (solo se puede ingresar una línea de texto)
JTextArea jt=new JTextArea(10,30 );//Crea un área de edición de texto, de 10 cm de largo y 30 cm de ancho (puedes presionar Enter e ingresar varias líneas de texto)
JButton btn1 =new JButton("Query");//Crear un botón de consulta p>
Mywindow()//Constructor, cada clase debe tenerlo, puede estar vacío
{
JFrame frm=new JFrame("Search");/ /Crea una ventana (para darle a otras cosas un lugar para colocar, como un contenedor. Es uno de los tres contenedores de nivel más alto, los otros dos son subprogramas y window)
frm.setBounds(400,300,450,350); //Establece el tamaño y la posición, las dos primeras son coordenadas, las dos últimas son tamaño
Container con=getContentPane();/ /Cree un objeto contenedor awt para agregar otros elementos, es mejor usar esto Agregar elementos.
Como: frm.add(all); se puede escribir como con.add(all);
JPanel pnl4=new JPanel();// Cree un panel para agregar otros elementos (contenedor de segundo nivel, último Debe agregarse al marco)
pnl4.setBorder(BorderFactory.createTitledBorder("Search"));//Establecer el estilo del borde
pnl4.add(txf); //Poner Agregar el cuadro de edición de texto al panel
pnl4.add(btn1);//Agregar el botón al panel
btn1.addActionListener(this);//Agregar un detector de comportamiento de eventos (this), esto significa el objeto actual, que se hace eco de las implementaciones ActionListener
JPanel pnl5=new JPanel();//Igual que arriba
pnl5.setBorder(BorderFactory. createTitledBorder("Result") );//Igual que arriba
jt.setWrapStyleWord(true);//Me olvidé de esto
jt.setLineWrap(true);//Bajo el ancho especificado por el área, si el texto Ingresar hasta el final de una línea continuará automáticamente la línea. Si es (falso), la entrada de texto continuará en esta línea hasta que presione Entrar
pnl5. add(new JScrollPane(jt));// Este panel agrega una barra de desplazamiento en el lado derecho Cuando la entrada de texto excede el largo * ancho, aparece la barra de desplazamiento
JPanel all=new JPanel(). ;//Igual que arriba
all.setLayout(new BorderLayout ());//Establezca el diseño, borderlayout() se divide en cinco partes: este, oeste, sur, norte (arriba, abajo, izquierda, derecha). No importa qué tan grande sea la ventana, la del medio ocupa el área más grande
all.add(pnl4,BorderLayout.NORTH //Agrega un panel en la parte superior
all.add(pnl5,BorderLayout.CENTER);//Agregar uno en el medio
frm.add(all);//Pon el más grande Este panel también se puede agregar a la ventana usando con. add(all);
frm.setVisible(true);//Establezca el atributo de visualización de la ventana si es falso, no se mostrará
addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);}});//Agrega un detector de ventana Si haces clic en la pequeña cruz roja para cerrar la ventana, el sistema saldrá
}
public void actionPerformed(ActionEvent e)// Como constructor de la clase ActionListener, si tu clase implementa ActionListenser, debes tener esto, también puedes escribir una clase separada, pero es un poco problemático < /p >
{
if(e.getSource()==btn1)//Cuando se hace clic en el botón
{
String str= " ";//Crear una cadena
String tmp=this.txf.getText();//Igual que arriba, el valor de esta cadena es el valor ingresado en el cuadro de texto en el objeto actual ( ventana)
p>for(int k=0;k str+=tmp.charAt(k)+"%";//Insertar % en cada Después el carácter, se explica la función String sql=null;//Igual que arriba Declaración stmt=null;//Defina un stmt utilizado para establecer una conexión a la base de datos sql="select * from chino donde los caracteres suenan como'"+str+"'";//Crea una declaración de base de datos SQL, pero sigue siendo una cadena en sí misma System.out.println( sql) ;//El sistema muestra la declaración creada, generalmente utilizada para encontrar errores try{// Las funciones de try y catch no se pueden explicar claramente en una o dos oraciones si no lo sabe. , puedes comprobarlo tú mismo Class.forName("com.mysql.jdbc.Driver");//o: Class.forName("org.gjt.mm.mysql.Driver"); controlador de base de datos mysql Conexión conn =DriverManager.getConnection("jdbc:mysql://localhost/japan?user=root&password=sa");//Establecer una conexión, nombre de la base de datos Japón (¿por qué no chino? ) nombre de usuario raíz contraseña sa stmt=conn.createStatement();//Crear un objeto de declaración para enviar declaraciones SQL a la base de datos ResultSet rs=stmt.executeQuery(sql) ;//Ejecute la declaración y cree un conjunto de resultados de la consulta System.out.println("\n--------------------- buscar :"+str+"----- --------------------------");//Igual que arriba jt.setText("");//Borrar área de edición de texto while(rs.next())//bucle while, cuando todavía hay resultados, agrega todos los resultados de la consulta a la edición de texto área { jt.append(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\ t"); System.out.print(new String(rs.getString("charname").getBytes("iso-8859-1"),"gb2312")+"\t") ; } stmt.close();//Cerrar la relación, muy importante. } catch(Exception eq){System.out.println("error");} //-------- -------------------------------------------------- ----end btn1------- } } public static void main(String args[]) { Mywindow win=new Mywindow();//Crear un objeto mywindow win.pack();//Integrar todos los elementos win.show(); } }