1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Exibir componentes quando radio é marcado

Olá, eu estou fazendo um programinha em java e eu queria que aparecesse em um espaço livre na minha janela vários componentes como caixas de textos, radio buttons, checkbox e etc que eu fiz quando determinado jradiobutton estivesse marcado, eu pensei em adiciona-los em um jpanel e adicionasse o jpanel neste local da janela quando o jradiobutton estivesse marcado, um detalhe, eu tenho que usar um jScrollpane para visualizar o resto do jpanel, más eu não consegui, meu código é esse:

Editado:

package Pacote;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;
import java.util.UUID;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.text.StyledEditorKit.BoldAction;

public class Main extends JFrame implements ActionListener {
    JPanel perso = new JPanel();
    JScrollPane scroll = new JScrollPane (perso);
    JFrame janela = new JFrame();

    boolean retorno6 = false;
    //perso num

    JLabel Num = new JLabel("Números:");
    JLabel lim = new JLabel("Limites:");
    JLabel mim = new JLabel("Min:");
    JLabel max = new JLabel("Max:");
    JLabel numvali = new JLabel("Números Válidos");
    JLabel numinvali = new JLabel("Números Inválidos:");
    JLabel tipo = new JLabel("Tipo:");


    JCheckBox num = new JCheckBox("Números");

    JFormattedTextField limite1 = new JFormattedTextField();
    JFormattedTextField limite2 = new JFormattedTextField();

    JRadioButton numv = new JRadioButton("Números Válidos");
    JRadioButton numi = new JRadioButton("Números Inválidos");
    JFormattedTextField numv2 = new JFormattedTextField();
    JFormattedTextField numi2 = new JFormattedTextField();

    JRadioButton decimal = new JRadioButton("Decimais");
    JRadioButton inteiro = new JRadioButton("Inteiros");
    JRadioButton natural = new JRadioButton("Naturais");

    //perso num 
    String sb = "";
    String nl = "";
    JRadioButton numeroseletras = new JRadioButton("Números e Letras");
      JRadioButton simbolos = new JRadioButton("Simbolos");
    String ms = "";
    boolean retorno3 = false;
    boolean retorno4 = false;
    boolean retorno5 = false;
    String str;
    Random rdm = new Random();
    Random random = new Random();
    int aleatorio = (random.nextInt(3));
    boolean retorno2;  
    boolean retorno;  
    public static int numero;
    public Boolean bnumeros = false;
    public Boolean bletras = false;
    public Boolean bmisturado = false;
    public Boolean bpersonalizado = false;
    public JLabel labelgerado = new JLabel();
    public JButton gerar = new JButton("Gerar");
    public JRadioButton numeros = new JRadioButton ("Numeros",true);
    public JRadioButton letras = new JRadioButton ("Letras");
    public JRadioButton misturado = new JRadioButton ("Misturado");
    public JRadioButton personalizado = new JRadioButton ("Personalizado");
    public JTextField primeirointervalo = new JTextField();
    public JTextField quantidadedecaracteres = new JTextField();
    public JTextField segundointervalo = new JTextField();
    public JLabel gerado = new JLabel("");
    public JLabel titulo1 = new JLabel ("Clique em gerar para gerar qulquer numero aleatório");
    public JLabel titulo2 = new JLabel ("Clique em gerar para gerar letras aleatórias");
    public JLabel titulo3 = new JLabel ("Clique para gerar numeros e letras leatórios(as) misturados");
    public JLabel titulo4 = new JLabel ("Clique para gerar todos os outros anterirores com a quantidade de caracteres e o intervalo desejado");
    public JCheckBox gerarnumeros = new JCheckBox("Numeros");
    public JCheckBox gerarletras = new JCheckBox("Letras");

    public ButtonGroup grupo = new ButtonGroup();

    public Font fontebotao = new Font("Arial",Font.BOLD,50);
    public Font fontelabel = new Font("Arial",Font.BOLD,20);

    public void simbolo(){
        String letras4 = "!@#$%¨&*()_-+=§ªº{[]};:.><?/°|/;";  
        Random r5 = new Random();
        int r4 = r5.nextInt(9);
      Random random = new Random();  

      int index = -1;  
      for( int i = 0; i < r4; i++ ) {  
         index = random.nextInt( letras4.length() );  
         sb += letras4.substring( index, index + 1 );  
      }  
      str = sb;
      System.out.println(sb);  

      System.out.println(sb);
    }

    public void numeroeletra(){
        String letras3 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";  
          Random r4 = new Random();
          int r3 = r4.nextInt(9);
        Random random = new Random();  

        int index = -1;  
        for( int i = 0; i < r3; i++ ) {  
           index = random.nextInt( letras3.length() );  
           nl += letras3.substring( index, index + 1 );  
        }  
        str = nl;
        System.out.println(nl);  

        System.out.println(nl); 
    }

    public void misturado(){
        String letras = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%¨&*()_-+=§ªº{[]};:.><?/°|/;";  
        Random r2 = new Random();
        int r = r2.nextInt(9);
      Random random = new Random();  

      int index = -1;  
      for( int i = 0; i < r; i++ ) {  
         index = random.nextInt( letras.length() );  
         ms += letras.substring( index, index + 1 );  
      }  
      str = ms;
      System.out.println(ms);  

      System.out.println(ms);  
      }  

    public void GerarLetra(){
        String letras = "ABCDEFGHIJKLMNOPQRSTUVYWXZ";  
          Random r2 = new Random();
          int r = r2.nextInt(9);
        Random random = new Random();  

        String armazenaChaves = "";  
        int index = -1;  
        for( int i = 0; i < r; i++ ) {  
           index = random.nextInt( letras.length() );  
           armazenaChaves += letras.substring( index, index + 1 );  
        }  
        str = armazenaChaves;
        System.out.println( armazenaChaves );  

        System.out.println( armazenaChaves );  
}
    public void verificaradio(){
        if(numeros.isSelected()){
           retorno = true;
           retorno2 = false;
           retorno3 = false;
           retorno4 = false;
           retorno5 = false;
        }
        if(letras.isSelected()){
            retorno2 = true;
            retorno = false;
            retorno3 = false;
            retorno4 = false;
            retorno5 = false;
         }
        if(misturado.isSelected()){
            retorno3 = true;
            retorno2 = false;
            retorno = false;
            retorno4 = false;
            retorno5 = false;
         }
        if(numeroseletras.isSelected()){
            retorno4 = true;
            retorno3 = false;
            retorno2 = false;
            retorno = false;
            retorno5 = false;
         }
        if(simbolos.isSelected()){
            retorno5 = true;
            retorno2 = false;
            retorno = false;
            retorno3 = false;
            retorno4 = false;
            retorno3 = false;
         }

    }

    public void GerarNúmero(){

        if(aleatorio==0){
            numero = (rdm.nextInt(99));//atribuição de valores aleatórios
            aleatorio = (random.nextInt(3));
        }
        if(aleatorio==1){
            numero= (rdm.nextInt(999));//atribuição de valores aleatórios
            aleatorio = (random.nextInt(3));     
        }
        if(aleatorio==2){
            numero = (rdm.nextInt(999999));//atribuição de valores aleatórios
            aleatorio = (random.nextInt(3));     
        }
        if(aleatorio==3){
            numero = (rdm.nextInt(999999999));//atribuição de valores aleatórios
            aleatorio = (random.nextInt(3));     
        }
        System.out.println(numero);
    }
    public void actionPerformed(ActionEvent evento) {
        if(evento.getSource()==gerar){
             verificaradio();
             if(retorno==true){
                 GerarNúmero();
                 gerado.setText(String.valueOf(numero));
                 labelgerado.setText("Número Gerado:");
                 }
           if(retorno2==true){
                  GerarLetra();
                  gerado.setText(str);
                 labelgerado.setText("Palavra ou Letra Gerada:");
           }
           if(retorno3==true){
                  misturado();
                  gerado.setText(ms);
                 labelgerado.setText("Misturado Gerado:");

           }
           if(retorno4==true){
                  numeroeletra();
                  gerado.setText(nl);
                 labelgerado.setText("Números e Letras Gerado:");
           }
           if(retorno5==true){
                  simbolo();
                  gerado.setText(sb);
                 labelgerado.setText("Os Símbolos Gerados São:");
           }

        }
    }


    Main(){

        janela.setLayout(null);

        perso.add(Num);
         Num.setBounds(50,50,100,100);
         Num.setFont(fontelabel);
        perso.add(lim);
         lim.setBounds(50,70,100,100);
         lim.setFont(fontelabel);
        perso.add(mim);
         mim.setBounds(50,90,100,100);
         mim.setFont(fontelabel);
        perso.add(max);
         max.setBounds(50,110,100,100);
         max.setFont(fontelabel);
        perso.add(numvali);
         numvali.setBounds(50,130,100,100);
         numvali.setFont(fontelabel);
        perso.add(numinvali);
         numinvali.setBounds(50,150,100,100);
         numinvali.setFont(fontelabel);
        perso.add(tipo);
         tipo.setBounds(50,170,100,100);
         tipo.setFont(fontelabel);

         janela.add(perso);
         perso.setVisible(true);

        janela.add(labelgerado);
        labelgerado.setBounds(100,20,300,80);
        labelgerado.setFont(fontelabel);

        janela.add(gerado);
        gerado.setBounds(50,90,500,80);
        gerado.setFont(fontebotao);


        numeros.addActionListener(this);
        letras.addActionListener(this);
        misturado.addActionListener(this);
        personalizado.addActionListener(this);
        gerar.addActionListener(this);
        numeroseletras.addActionListener(this);


        grupo.add(numeros);
        grupo.add(letras);
        grupo.add(misturado);
        grupo.add(personalizado);
        grupo.add(numeroseletras);
        grupo.add(simbolos);

        janela.add(numeros);
        numeros.setBounds(5,-10,80,50);

        janela.add(letras);
        letras.setBounds(85,-10,70,50);

        janela.add(numeroseletras);
        numeroseletras.setBounds(160,-10,140,50);

        janela.add(simbolos);
        simbolos.setBounds(300,-10,100,50);

        janela.add(misturado);
        misturado.setBounds(400,-10,90,50);

        janela.add(personalizado);
        personalizado.setBounds(500,-10,150,50);

        janela.add(gerar);
        gerar.setBounds(-1,220,700,50);
        gerar.setFont(fontebotao);

        janela.setTitle("Gerador Aleatorio");
        janela.setSize(700,300);
        janela.setVisible(true);
        janela.setLocationRelativeTo(null);
        janela.setResizable(false);
        janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }



        public static void main(String[] args){
        new Main();
        }

}

Aí eu só adicionei um componente mais eu preciso adicionar vários e fazer uma barra de rolagem,se não fui objetivo ou minha pergunta estiver confusa falem pra mim por favor, eu nunca fiz algo do tipo e preciso de ajuda.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java java8 swing interface ou faça a sua própria pergunta.