Pergunta

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();
}
}

Parece que este código está atualizando o banco de dados.Me sugerir as alterações mais eu deveria fazer.A declaração de variável foi criando o problema, eu acho, a Seqüência de caracteres i1type foi declarado dentro de radiobutton e não estava disponível para o Botão Salvar.

Foi útil?

Solução

O meu problema é que eu estou tentando recuperar o valor do radiobutton em Formato de seqüência de caracteres.

Em primeiro lugar, esta linha não é mesmo compilar:

String i1type = i1bg.isSelected();

Porque:

  1. ButtonGroup.isSelected(ButtonModel modelo) requer um ButtonModel como argumento.
  2. Este método retorna um boolean o que você está tentando assig para um String variável.

Você pode alcançar seu objetivo através da implementação de um ActionListener como descrito na Como Usar Botões, Caixas de Seleção e Botões de Rádio tutorial e a conexão desta ação ouvinte a sua botões de rádio.Por exemplo:

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);
...

Se o valor que você precisa e botões de texto pode diferir, em seguida, você pode usar putClientProperty() método (herdado de JComponent) como exemplificado na esta resposta.

Outras dicas

isSelected (você está faltando alguns argumentos) determina se qualquer botão de opção é selecionado no ButtonGroup.

Você precisa getSelection

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

Para este trabalho o ActionCommand precisa ser explicitamente definida para o botão de rádio

Você se esqueceu adicionar o seu JRadioButtons para o ButtonGroup.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top