Boa tarde, sou iniciante em Java e estou com um problema.
Estou criando um aplicativo que gera Textos conforme marco os Radio Buttons, acontece que precisei incluir um Combobox com várias opções (Assuntos), quando uma opção for selecionada deve ser listado seus Radio Buttons.
Alguém poderia me ajudar, eu não estou conseguindo criar uma lista de Radio Buttons para cada opção do Combobox, como poderia fazer nesse caso?
Agradeço desde já!
Põe uns exemplos de assuntos e respectivos radios
São procedimentos de um sistema, cada módulo tem o seu, por exemplo:
ESCRITA FISCAL
o Revisão de Parâmetros
o Importação de Perfis
o Importação de XML
FOLHA DE PAGAMENTO
o Revisão de Parâmetros
o Cadastros
o Cálculo
Neste caso necessito que cada módulo tenha sua lista de Radio Buttons.
Eu vou marcar as opção que foram feitas e o sistema vai gerar um arquivo de Texto.
Uma tela de exemplo:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.UIManager;
@SuppressWarnings("serial")
public class TelaExemplo extends JFrame {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
TelaExemplo tela = new TelaExemplo();
tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
tela.setLocationRelativeTo(null);
tela.setVisible(true);
} catch (Throwable t) {
t.printStackTrace();
}
}
// ComboBoxModel para renderizar a lista de módulos
private class ComboBoxModelModulos extends DefaultComboBoxModel<String> {
@Override
public String getElementAt(int index) {
Modulo modulo = sistema.getModulos().get(index);
return modulo.getNome();
}
@Override
public int getSize() {
return sistema.getModulos().size();
}
}
private final Sistema sistema = new Sistema();
private JPanel panelRadios;
private JComboBox<String> comboModulos;
public TelaExemplo() {
super("Exemplo");
setMinimumSize(new Dimension(480, 320));
comboModulos = new JComboBox<>(new ComboBoxModelModulos());
comboModulos.addItemListener(event -> selecionouModulo(sistema.getModulos().get(comboModulos.getSelectedIndex())));
panelRadios = new JPanel(new GridLayout(1, 1));
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
panel.setLayout(new BorderLayout());
panel.add(comboModulos, BorderLayout.NORTH);
panel.add(panelRadios, BorderLayout.CENTER);
setContentPane(panel);
}
private void selecionouModulo(Modulo modulo) {
List<Procedimento> procedimentos = modulo.getProcedimentos();
panelRadios.removeAll();
panelRadios.setLayout(new GridLayout(procedimentos.size(), 1));
ButtonGroup group = new ButtonGroup();
for (Procedimento procedimento : procedimentos) {
JRadioButton radio = new JRadioButton(procedimento.getNome());
radio.addItemListener(event -> {
if (radio.isSelected()) {
selecionouProcedimento(procedimento);
}
});
group.add(radio);
panelRadios.add(radio);
}
panelRadios.revalidate();
}
private void selecionouProcedimento(Procedimento procedimento) {
JOptionPane.showMessageDialog(this, "Selecionou: " + procedimento.getNome(), "Aviso", JOptionPane.INFORMATION_MESSAGE);
}
}
Uma classe que representa as funcionalidades do seu sistema:
import java.util.Arrays;
import java.util.List;
public class Sistema {
private List<Modulo> modulos;
public Sistema() {
Modulo modulo1 = new Modulo("ESCRITA FISCAL", // nome do módulo
new Procedimento("Revisão de Parâmetros"), // procedimento 1
new Procedimento("Importação de Perfis"), // procedimento 2
new Procedimento("Importação de XML")); // procedimento 3
Modulo modulo2 = new Modulo("FOLHA DE PAGAMENTO", // nome do módulo
new Procedimento("Revisão de Parâmetros"), // procedimento 1
new Procedimento("Cadastros"), // procedimento 2
new Procedimento("Cálculo")); // procedimento 3
modulos = Arrays.asList(modulo1, modulo2);
}
public List<Modulo> getModulos() {
return modulos;
}
}
Uma classe que representa um módulo do seu sistema:
import java.util.Arrays;
import java.util.List;
public class Modulo {
private String nome;
private List<Procedimento> procedimentos;
public Modulo(String nome, Procedimento... procedimentos) {
this.nome = nome;
this.procedimentos = Arrays.asList(procedimentos);
}
public String getNome() {
return nome;
}
public List<Procedimento> getProcedimentos() {
return procedimentos;
}
}
Uma classe que representa um procedimento de um módulo do sistema:
public class Procedimento {
private String nome;
public Procedimento(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
1 curtida
Muito obrigado! Me ajudou muito
1 curtida