当前位置: 首页 > 知识库问答 >
问题:

操作侦听器下的单选按钮

孟浩然
2023-03-14
   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();


}

}

共有1个答案

谢嘉
2023-03-14

我认为您想做的是,当您单击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类型弹出窗口。在这里,我可以输入值,打一些勾,然后单击“确认”。因此,我需要从对话框中读取该输入,以便可以将此值添加到主应用程序中的表中。按下“确认”按钮时如何收听,以便在此之后可以读取该值? 问题答案: 如果在用户按下后对话框消失,请确认: 你希望有对话的行为如同一个 模态 的