Java 单击文本字段而不是按钮
我用Java Swings编写了这段代码,它创建了2个框架。第一个框架包含4个文本字段(卷号、名称、类、节)将文本字段留空我单击第一个框架中的搜索按钮,另一个框架将打开,其中包含数据库中的所有表记录。一旦我选择了一条记录(或行)它的所有详细信息都显示在第一帧中,即卷号、类别、名称和节被填充。 现在我正在使用“搜索”按钮转到下一帧。我应该如何做才能在单击“卷号”文本字段而不是“搜索”按钮后执行该操作 代码如下:Java 单击文本字段而不是按钮,java,mysql,swing,jframe,jtextfield,Java,Mysql,Swing,Jframe,Jtextfield,我用Java Swings编写了这段代码,它创建了2个框架。第一个框架包含4个文本字段(卷号、名称、类、节)将文本字段留空我单击第一个框架中的搜索按钮,另一个框架将打开,其中包含数据库中的所有表记录。一旦我选择了一条记录(或行)它的所有详细信息都显示在第一帧中,即卷号、类别、名称和节被填充。 现在我正在使用“搜索”按钮转到下一帧。我应该如何做才能在单击“卷号”文本字段而不是“搜索”按钮后执行该操作 代码如下: import javax.swing.*; import javax.swing.ev
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.sql.*;
import java.util.Vector;
import java.awt.event.*;
public class barcoder1 implements ActionListener{
JFrame frame,frame1;
JTextField textbox,textbox1,textbox2,textbox3,textbox4,textbox5,textbox6,textbox7,textbox8;
JLabel label,label1,label2,label3,label4,label5,label6,label7,label8;
JButton button;
JPanel panel;
static JTable table;
String driverName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb";
String userName = "root";
String password = "root";
String[] columnNames = {"Roll No", "Name", "Class", "Section"};
public void createUI()
{
frame = new JFrame("Database Search Result");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
textbox = new JTextField();
textbox.setBounds(120,30,150,20);
label=new JLabel("Roll No.");
label.setBounds(10, 30, 100, 20);
textbox1 = new JTextField();
textbox1.setBounds(120,50,150,20);
label1=new JLabel("Name");
label1.setBounds(10, 50, 100, 20);
textbox2 = new JTextField();
textbox2.setBounds(120,70,150,20);
label2=new JLabel("Class");
label2.setBounds(10, 70, 100, 20);
textbox3 = new JTextField();
textbox3.setBounds(120,90,150,20);
label3=new JLabel("Section");
label3.setBounds(10, 90, 100, 20);
button = new JButton("search");
button.setBounds(120,230,150,20);
button.addActionListener(this);
frame.add(textbox);
frame.add(label);
frame.add(textbox1);
frame.add(label1);
frame.add(textbox2);
frame.add(label2);
frame.add(textbox3);
frame.add(label3);
frame.add(button);
frame.setVisible(true);
frame.setSize(500, 400);
}
public void actionPerformed(ActionEvent ae)
{
button = (JButton)ae.getSource();
System.out.println("Showing Table Data.......");
showTableData();
}
public void showTableData()
{
frame1 = new JFrame("Database Search Result");
//frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setLayout(new BorderLayout());
//TableModel tm = new TableModel();
DefaultTableModel model = new DefaultTableModel(){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
model.setColumnIdentifiers(columnNames);
//DefaultTableModel model = new DefaultTableModel(tm.getData1(), tm.getColumnNames());
//table = new JTable(model);
final JTable table = new JTable(model);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = table.getSelectedRow();
System.out.println("Selecte table row = " + row);
if (row != -1) {
int modelRow = table.convertRowIndexToModel(row);
System.out.println("Selecte model row = " + row);
Vector data = (Vector) ((DefaultTableModel) table.getModel()).getDataVector().get(modelRow);
textbox.setText(data.get(0).toString());
textbox1.setText(data.get(1).toString());
textbox2.setText(data.get(2).toString());
textbox3.setText(data.get(3).toString());
}
}
});
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) {
if (table.getSelectedRow() != -1) {
SwingUtilities.getWindowAncestor(table).dispose();
}
}
}
});
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
table.setFillsViewportHeight(true);
JScrollPane scroll = new JScrollPane(table);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
String textvalue = textbox.getText();
String roll= "";
String name= "";
String cl = "";
String sec = "";
try
{
Class.forName(driverName);
Connection con = DriverManager.getConnection(url, userName, password);
//String sql = "select * from student where rollno = "+textvalue;
String sql="select * from student";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
int i =0;
while(rs.next())
{
roll = rs.getString("rollno");
name = rs.getString("name");
cl = rs.getString("class");
sec = rs.getString("section");
model.addRow(new Object[]{roll, name, cl, sec});
}
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex.getMessage(),"Error",
JOptionPane.ERROR_MESSAGE);
}
frame1.add(scroll);
frame1.setVisible(true);
frame1.setSize(400,300);
}
public static void main(String args[])
{
barcoder1 sr = new barcoder1();
sr.createUI();
}
}
添加FocusListener并对FocusGain调用相同的函数?使用与关闭窗口相同的技巧。将鼠标侦听器附加到字段并检测单击的鼠标。我不得不说,这是一种不同寻常的航行方式though@MadProgrammer那么,我是否应该只放置showtabledata而不是SwingUtilities.getWindowSenator(table.dispose();?如果
showtabledata
打开了另一个窗口,则是。然而,你可能想看看,当我这样做的时候,什么都没有发生