检索按钮组的值时我做错了什么? [英] What am i doing wrong in retrieving value of button group?

查看:100
本文介绍了检索按钮组的值时我做错了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import javax.swing.*;
import javax.swing.event.*; 
import java.awt.*;
import java.awt.event.*;
import net.java.dev.designgridlayout.DesignGridLayout;
import java.sql.*;

class databaseprob 
{
JFrame JF;
Container C,C1;
JDesktopPane JDP;
JInternalFrame JIF5;
JLabel i1l1,i1l2;
JTextField i1t1;
JRadioButton i1r1,i1r2,i1r3,i1r4;
JButton i1b1,i1b2,i1b3;
JInternalFrame JIF1;
ButtonGroup i1bg;
String i1type;


public databaseprob()
{
JF = new JFrame();
JDP = new JDesktopPane();
JF.setVisible(true);
JF.pack();


    JIF1 = new JInternalFrame("Register",true,true, true, true);
C=JF.getContentPane();
C.add(JDP,BorderLayout.CENTER);
JIF1.setVisible(true);
JIF1.setBounds(10, 10, 600, 500); 
    C1 = JIF1.getContentPane();
DesignGridLayout layout = new DesignGridLayout(C1);



    i1l1 = new JLabel("Head ID : ");
    i1l2 = new JLabel("Type : ");

    i1t1 = new JTextField(10);


    i1bg = new ButtonGroup();
    ActionListener actionListener = new ActionListener() { @Override
        public void actionPerformed(ActionEvent e) {
                JRadioButton radioButton = (JRadioButton)e.getSource();
                i1type = radioButton.getText();
                System.out.println(i1type);
            }
        };
    i1r1 = new JRadioButton("Customer");
    i1r1.addActionListener(actionListener);
    i1bg.add(i1r1);

    i1r2 = new JRadioButton("Supplier");
    i1r2.addActionListener(actionListener);
    i1bg.add(i1r2);

    i1r3 = new JRadioButton("Staff");
    i1r3.addActionListener(actionListener);
    i1bg.add(i1r3);

    i1r4 = new JRadioButton("Others");
    i1r4.addActionListener(actionListener);
    i1bg.add(i1r4);






   i1b1 = new JButton("Save");
i1b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
    {
            try
        {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection i1conn =   DriverManager.getConnection("Jdbc:Odbc:TomsJava");

        int i1headID = Integer.parseInt(i1t1.getText());


        Statement i1stmt = i1conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        ResultSet i1rs = i1stmt.executeQuery("SELECT * FROM i1Register");
        i1rs.moveToInsertRow();
        i1rs.updateInt("Head_ID", i1headID);
        i1rs.updateString("Type",i1type);

        i1rs.insertRow();   
        i1stmt.close();
        i1rs.close();
        }       

    catch(SQLException e)
    {
    System.out.println(e);
    }
    catch(ClassNotFoundException z)
    {
    System.out.println(z);
    }
    catch(NumberFormatException n)
    {
    System.out.println(n);
    }
    }
});

   i1b2 = new JButton("Reset");
   i1b3 = new JButton("Close");



layout.row().grid(i1l1).add(i1t1);
layout.row().grid(i1l2).add(i1r1).add(i1r2).add(i1r3).add(i1r4);

layout.emptyRow();
layout.row().center().add(i1b1).add(i1b2).add(i1b3);

JDP.add(JIF1);
}
public static void main(String args[])
{
new databaseprob();
}
}

似乎此代码正在更新数据库。建议我应该做的任何其他更改。我猜想变量声明正在产生问题,String i1type在单选按钮内声明,并且不适用于保存按钮。

Seems this code is updating the database. Suggest me any more changes i should make. The variable declaration was creating the problem i guess, the String i1type was declared inside radiobutton and wasnt available for Save Button.

推荐答案


我的问题是我试图以
字符串格式检索单选按钮的值。

My problem is that i am trying to retrieve value of radiobutton in String format.

在首先,该行甚至不会编译:

In first place this line won't even compile:

String i1type = i1bg.isSelected();

原因:


  1. ButtonGroup.isSelected(ButtonModel模型)要求
    ButtonModel 作为参数。

  2. 此方法返回一个布尔值,您要对其进行设置到 String 变量。

  1. ButtonGroup.isSelected(ButtonModel model) requires a ButtonModel as argument.
  2. This method returns a boolean which you're trying to assig to a String variable.

您可以通过实现<如 ActionListener = http://docs.oracle.com/javase/tutorial/uiswing/components/button.html rel = nofollow noreferrer>如何使用按钮,复选框和单选按钮教程并附带此内容单选按钮的动作监听器。例如:

You can achieve your goal by implementing an ActionListener as described in How to Use Buttons, Check Boxes, and Radio Buttons tutorial and attaching this action listener to your radio buttons. For instance:

ActionListener actionListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JRadioButton radioButton = (JRadioButton)e.getSource();
        String selectedOption = radioButton.getText();
        System.out.println(selectedOption );
    }
};

i1r1.addActionListener(actionListener);
i1r2.addActionListener(actionListener);
...

如果您需要的值和单选按钮文本可能不同,则可以使用 putClientProperty()方法(继承自 JComponent ),如此答案

If the value you need and radio buttons text may differ then you can use putClientProperty() method (inherited from JComponent) as exemplified in this answer.

这篇关于检索按钮组的值时我做错了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆