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());
}
}
@override 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();
}
}
我认为您想做的是,当您单击execute按钮时,它会查找当前选定的RadioButton
。最简单的方法是将所有按钮保存到集合中(例如arraylist
):
ArrayList<JRadioButton> radioButtonList = new ArrayList<JRadioButton>();
radioButtonList.add(rbAuthorName);
radioButtonList.add(rbTitle);
radioButtonList.add(rbtYear);
并在execute按钮的ActionListener中迭代该列表并查找选定的列表:
@Override
public void actionPerformed(ActionEvent e){
if(e.getSource()==execButton){
String buttonName="";
for(JRadioButton button: radioButtonList){
if(button.isSelected()){
buttonName = button.getName;
}
searchData(buttonName);
}
}
之后,您只需稍微修改searchdata
方法,以便strdata
获得参数的值。
我想根据单选按钮的选择设置文本框的可编辑选项?如何对单选按钮上的动作监听器进行编码?
下面的代码是项目的动作侦听器。基本上,我有 4 个单选按钮,当我单击一个时,我希望它更改屏幕上的变量。当我运行代码时,它只是将所有值相加。还有其他方法可以做到这一点吗?
我打算写一个程序,我将给用户一个选择从8*8矩阵。因为我的声誉低于10,我不能包括图像,但请放心,这只是一个正常的8*8矩阵。我计划在我的Java程序中用8*8=64个单选按钮可视化它。用户一次只能选择一个单选按钮,所以这意味着所有64个按钮都属于同一个按钮组。 现在,我如何管理动作监听器?为64个单选按钮中的每一个设置64个单独的动作监听器是不可能的(真的很无聊)。由于所有64个单选按钮都在同一
我目前正在尝试对我的实现一个操作侦听器,以便在选择它时,它将打开一个供用户选择他们希望GUI使用的文件。对于初学者,我如何让控制台打印出“框单击!”当用户选中该框时? 它已经有一段时间,因为我已经在摇摆编程,所以任何建议都有帮助!
我有一个有许多按钮的程序,所有这些按钮都将执行相同的功能。我想知道是否有办法将一个侦听器附加到程序中所有现有的JButton。
问题内容: 我有主要的应用程序在哪里与值表。然后,我单击“添加”按钮,新的CUSTOM(我自己创建)出现了JDialog类型弹出窗口。在这里,我可以输入值,打一些勾,然后单击“确认”。因此,我需要从对话框中读取该输入,以便可以将此值添加到主应用程序中的表中。按下“确认”按钮时如何收听,以便在此之后可以读取该值? 问题答案: 如果在用户按下后对话框消失,请确认: 你希望有对话的行为如同一个 模态 的