Gerar um JLabel de um TextField através de button

4 respostas
E

Bom dia pessoal.

Estou com uma tarefa aki e estou com dificuldades em desenvolve-la.
É o seguinte:

Preciso desenvolver um JFrame no eclipse, que contenha dois JButtons, um terá a função de gerar um JLabel e o outro um TextField dentro da propria janela após o click do usuário.
Imagino ter que criar um nova classe com as propriedades do JLabel e TextField e chama-las nos botões. Alguém consegue me ajudar. Segue o que já fiz.

package br.com.principal.java.Gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;



public class Janela extends JFrame{
	
	public Janela(){ // metodo construtor
		
		super("Minha Janela");
		
		Container c = new JPanel();
		c.setLayout(new GridLayout(2,2,300,500));
		
		
		c.add(new JButton("Gerar titulo"));
		c.add(new JButton("Gerar área de texto"));
		c.add(new JPanel());
		
		
		Container d = getContentPane();
		
		Container l = new JLabel("Gerar componentes", 0); // 0 = alinhamento no centro 2= esquerda 4=direita 
		
		
		
		l.setSize(220,30); 
		l.setLocation(50,80); 
		l.setForeground(Color.blue); 
				
		d.add(BorderLayout.NORTH, l);
		d.add(BorderLayout.CENTER, c);
		
		setSize(600,600); // tamanho da janela
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // após o fechamento da janela ele finaliza a aplicação
		setVisible(true);
		
		

		
	}

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

	}

}

[b]Classe JLabel[/b][u][color=red] [/color]

package br.com.principal.java.Gui;
import javax.swing.*;
import java.awt.*;

public class Jlabel{
		
	
	public Jlabel(int largura, int altura ){
		
		
	}

}

Agradeço.

4 Respostas

A

Para voce realizar isso, não ha a necessidade de criar uma classe para o JLabel ou JTextField, apenas adicionar ao botão o ActionListener

JButton botao = new JBotao("Add jlabel);
botao.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
               //adicionar a funcao do botao para adicionar um JLabel ao JPanel
            }
        }

Sera a mesma coisa para o outro botão.
Se não souber até o momento o que é e como trabalhar com Listener, recomendo voce dar uma lida aqui:
[url]http://www.guj.com.br/java/230567-o-que-e-listener[/url]
[url]http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html[/url]

[]s

E

Obrigado pela resposta andrielc.

Mas infelizmente ainda não consegui setar o campo de texto na janela. Já li a documentação, mas ainda não foi.

To fazendo isso aki:

public Janela(){ // metodo construtor
		super("Minha Janela");
		
		texto = new JLabel("Teste");
		texto.setFont(new Font("Serif",Font.PLAIN,26));
			
		
		//Botão para gerar campo de texto
		btGeraCampo = new JButton("Gerar Campo de Texto");
		btGeraCampo.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
			if(e.getSource()==btGeraCampo);
			
			//Como gerar um Campo de texto na janela?
				
			}
		});
R
eneias lacerda:
Obrigado pela resposta andrielc.

Mas infelizmente ainda não consegui setar o campo de texto na janela. Já li a documentação, mas ainda não foi.

To fazendo isso aki:
public Janela(){ // metodo construtor
		super("Minha Janela");
		
		texto = new JLabel("Teste");
		texto.setFont(new Font("Serif",Font.PLAIN,26));
			
		
		//Botão para gerar campo de texto
		btGeraCampo = new JButton("Gerar Campo de Texto");
		btGeraCampo.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
			if(e.getSource()==btGeraCampo);
			
			//Como gerar um Campo de texto na janela?
				
			}
		});

assim? :

JLabel labelTexto = new javax.swing.JLabel();
labelTexto.setText("Lista de Atributos");
V

Por favor, ao postar código, use a tag code. Assim ele fica formatado, veja como:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Criado 2 de abril de 2013
Ultima resposta 5 de abr. de 2013
Respostas 4
Participantes 4