【发布时间】:2012-10-20 04:50:41
【问题描述】:
我希望当我选择一个单选按钮并单击执行按钮时,我希望我的搜索结果返回作者标题和年份的结果。例如,如果我单击作者并输入存储在数据库中的作者姓名,我想获取作者、标题和年份。问题在于将单选按钮连接到执行框。提前致谢。
package data
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.util.ArrayList;
public class data extends JFrame implements ActionListener{
/**
* @param args the command line arguments
*/
//Database Globals
Connection conn;
Statement stmt;
ResultSet result;
//Instance Variables
private Container contentPane;
private JLabel labelSearch;
private JTextField tfSearch;
private JButton execButton;
private JRadioButton rbAuthorName, rbTitle, rbYear;
private ButtonGroup searchChoices;
ArrayList<JRadioButton> radioButtonList = new ArrayList<JRadioButton>();
//Constructor
public data(){
super("Database Search");
connect();
}
//Creating the GUI
public void buildGui(){
contentPane= getContentPane();
contentPane.setLayout(new FlowLayout());
//set pane size
setVisible(true);
setSize(200,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Initializing objects
labelSearch = new JLabel("Look Up");
tfSearch = new JTextField(30);
rbAuthorName = new JRadioButton("Author");
rbTitle = new JRadioButton("Title");
rbYear = new JRadioButton("Year");
searchChoices = new ButtonGroup();
execButton = new JButton("Execute");
//Adding objects to the component pane
contentPane.add(rbAuthorName);
contentPane.add(rbTitle);
contentPane.add(rbYear);
contentPane.add(execButton);
contentPane.add(labelSearch);
contentPane.add(tfSearch);
radioButtonList.add(rbAuthorName);
radioButtonList.add(rbTitle);
radioButtonList.add(rbYear);
execButton.addActionListener(this);
}
public void connect(){
try
{
System.out.println("Connection to Driver...");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connection successful");
System.out.println("Connection to Database...");
conn = DriverManager.getConnection("jdbc:mysql://localhost/tbl_books","root","");
System.out.println("Connection successful");
}catch(ClassNotFoundException cfe)
{
System.out.println ("Connection error: "+cfe.getMessage());
}
catch(SQLException sqle)
{
System.out.println ("Connection error: "+sqle.getMessage());
}
}
@覆盖 public void actionPerformed(ActionEvent e){
//Object src = e.getSource();
if(e.getSource()==execButton){
String buttonName ="";
for(JRadioButton button: radioButtonList){
if(button.isSelected()){
buttonName = button.getName();
}
searchData(buttonName);
}
}
}
public void searchData(String strData){
strData= tfSearch.getText();
try
{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sqlString = "SELECT tbl_authors.author, tbl_books.title, tbl_books.year " + "from tbl_authors, tbl_books " + "where tbl_authors.isbn = tbl_books.isbn";
if(rbAuthorName.isSelected()){
sqlString = sqlString + "author LIKE '%" + strData + "%'";
}
else if(rbTitle.isSelected()){
sqlString = sqlString + "title LIKE '%" + strData + "%'";
}
else if(rbYear.isSelected()){
sqlString = sqlString + "date LIKE '%" + strData + "%'";
}
result =stmt.executeQuery(sqlString);
int test = 0;
String store = "";
String response = "";
while(result.next()){
test ++;
store = store + "\n"+ test + "." +
result.getString(1)+ "" +
result.getString(2)+ "" +
result.getString(3);
}
if(test !=0){
result.absolute(test);
//displayData();
response = "Number of Records" + test + store;
JOptionPane.showMessageDialog(null, response);
}
else{
JOptionPane.showMessageDialog(null,"Could not find data");
}
}catch(Exception e){
e.getMessage();
}
}
//public void displayData(){
//}
public static void main(String[] args) {
// TODO code application logic here
CS6153Assignment2 data1 = new CS6153Assignment2();
data1.connect();
data1.buildGui();
}
}
【问题讨论】:
-
我很难准确理解您的问题是什么。您能否详细介绍一下您的问题?
-
我已经看到你的问题的编辑,谢谢,但你仍然可以告诉我们你当前的代码是如何不工作的吗?你有什么问题?错误?不良行为?在查看您的代码时,我没有看到您在任何地方使用 JTextFields 中保存的文本。我不确定我是否看到您将 JTextFields 添加到 GUI 的位置。也许这就是你的问题。
-
除了您似乎没有使用某些文本字段并且我看不到某些标签的意义这一事实之外,我看不到任何严重的问题。描述您希望看到什么以及您实际观察到什么。
-
我明白了,您只使用 tfSearch JTextField,这很好。同样,您需要告诉我们更多关于您的程序行为有什么问题。你让我们猜测,而我们通常不擅长这样做。
-
@Guillaume Polet 抱歉延迟回复。我实际上并没有早到。我确实编辑了代码并删除了不需要的标签和文本字段。当我还在编写代码时,我应该早点删除它们。很抱歉造成混乱。
标签: java swing jdbc actionlistener jradiobutton