1
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 是在单选按钮内声明的,不能用于保存按钮。

4

3 回答 3

3

isSelected(您缺少一些参数)确定是否在ButtonGroup.

你需要getSelection

if (i1bg.getSelection() != null) {
   String i1type = i1bg.getSelection().getActionCommand();
   ...
}

为此,ActionCommand需要为单选按钮显式设置

于 2014-02-27T15:32:48.953 回答
2

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

首先,这一行甚至不会编译:

String i1type = i1bg.isSelected();

因为:

  1. ButtonGroup.isSelected(ButtonModel model)需要一个 ButtonModel作为参数。
  2. 此方法返回boolean您尝试分配给String变量的 a 。

您可以通过实现如何使用按钮、复选框和单选按钮教程中所述的ActionListener并将此操作侦听器附加到您的单选按钮来实现您的目标。例如:

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),如本答案所示。

于 2014-02-27T15:51:32.127 回答
2

您忘记您的添加JRadioButtonsButtonGroup.

于 2014-02-27T15:30:37.733 回答