O setBounds nao ta rodando!

8 respostas
G

Bom galera.. Eu tendei fazer essa tela sozinho mais nao to conseguindo. Eu adicionei os fundos...mais os JLabel...JButton e JTextField...não estão sendo setado o setbounds...o qual eu normalmente utilizo pra ordena a questao de posição e tamanho desses campos.

Caso alguem possa me ajudar. Eu agradeceria muito...mais muito mesmo...ja to 3 dias batendo so em cima disso.

se alguem tiver alguma opiniao em otimização do codigo será bem-vinda.

----------------------------------
Explicando o codigo...
criei um JTable..onde adicionei 3 JPainel..um a esquerda(fnd_esquerdo.png)...outro no centro(fnd_centro.png) e outro em baixo do centro(fng_baixo.png),
o meu objetivo e criar uma tela onde so altere o centro.

Os fundos estao perfeitos. a questao e que os JLabel nao estao aceitando o setBounds...

package telaCadastra;


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import bancoDeDados.conexao;

public class cad_produto implements ActionListener {

	conexao con = new conexao();

	Graphics g;

	JFrame f = new JFrame();

	JPanel pEsquerdo = new JPanel() {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image imagem = new ImageIcon("res/fnd_esquerdo.png").getImage();
			g.drawImage(imagem, 0, 0, this);
		}
	};
	JPanel painelProduto = new JPanel() {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image imagem = new ImageIcon("res/fnd_centro.png").getImage();
			g.drawImage(imagem, 0, 0, this);
		}
	};

	JPanel pBaixo = new JPanel() {
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			Image imagem = new ImageIcon("res/fnd_baixo.png").getImage();
			g.drawImage(imagem, 0, 0, this);
		}
	};

	// declarando var campo de texto
	JTextField txtcodProduto = new JTextField("");
	JTextField txtprecoCustoProduto = new JTextField("");
	JTextField txtNomeProduto = new JTextField("");
	JTextField txtporcenteLucroProduto = new JTextField("");
	JTextField txtFormaVendaProduto = new JTextField("");

	JButton cmdBuscar = new JButton("Buscar");

	public void criarTela() {

		f.setSize(1020, 764);
		f.setLocation(0, 0);
		f.setTitle("Cadastro de Produtos");
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setLayout(null);

		 txt();
		 botao();
		 campoTxt();

		painelProduto.setSize(900, 800);
		painelProduto.setLocation(184, 0);

		
		
		f.add(pBaixo);
		f.add(painelProduto);
	
		f.add(pEsquerdo);
		f.setVisible(true);
	}

	public void botao() {

		cmdBuscar.setBounds(150, 150, 80, 20);
		cmdBuscar.addActionListener(this);
		painelProduto.add(cmdBuscar);

	}

	public void campoTxt() {

		txtcodProduto.setBounds(110, 11, 60, 20);
		painelProduto.add(txtcodProduto);

		txtprecoCustoProduto.setBounds(110, 41, 60, 20);
		painelProduto.add(txtprecoCustoProduto);

		txtNomeProduto.setBounds(220, 11, 250, 20);
		// txtNomeProduto.setLocation(220, 11);
		painelProduto.add(txtNomeProduto);

		txtporcenteLucroProduto.setBounds(320, 41, 60, 20);
		painelProduto.add(txtporcenteLucroProduto);

		txtFormaVendaProduto.setBounds(320, 71, 60, 20);
		painelProduto.add(txtFormaVendaProduto);

	}

	public void txt() {


		pEsquerdo.setSize(200, 800);
		pEsquerdo.setLocation(0, 0);

		pBaixo.setSize(900, 300);
		pBaixo.setLocation(181, 630);

		JLabel codProduto = new JLabel("Código:");
		codProduto.setBounds(40, 300, 50, 20);
		painelProduto.add(codProduto);

		JLabel nomeProduto = new JLabel("Nome:");
		nomeProduto.setBounds(300, 10, 50, 20);
		painelProduto.add(nomeProduto);

		JLabel precoCustoProduto = new JLabel("Preco de Custo:");
		precoCustoProduto.setBounds(13, 40, 100, 20);
		painelProduto.add(precoCustoProduto);

		JLabel porcentLucroProduto = new JLabel("Porcentagem de Lucro:");
		porcentLucroProduto.setBounds(180, 40, 140, 20);
		painelProduto.add(porcentLucroProduto);

		JLabel precoVendaProduto = new JLabel("Preço de Venda:");
		precoVendaProduto.setBounds(10, 70, 100, 20);
		painelProduto.add(precoVendaProduto);

		JLabel formaVendaProduto = new JLabel("Forma De Venda:");
		formaVendaProduto.setBounds(190, 70, 100, 20);
		painelProduto.add(formaVendaProduto);
	}

	void buscar() {

		painelProduto.setVisible(false);

	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		Object o = e.getSource();
		if (o == cmdBuscar) {
			// buscar();
		}
	}

	public String getTxtcodProduto() {
		return txtcodProduto.getText();
	}

	public String getTxtprecoCustoProduto() {
		return txtprecoCustoProduto.getText();
	}

	public String getTxtNomeProduto() {
		return txtNomeProduto.getText();
	}

	public String getTxtporcenteLucroProduto() {
		return txtporcenteLucroProduto.getText();
	}

	public String getTxtFormaVendaProduto() {
		return txtFormaVendaProduto.getText();
	}

	public void setTxtcodProduto(String txtcodProduto) {
		this.txtcodProduto.setText(txtcodProduto);
	}

	public void setTxtprecoCustoProduto(String txtprecoCustoProduto) {
		this.txtprecoCustoProduto.setText(txtprecoCustoProduto);
	}

	public void setTxtNomeProduto(String txtNomeProduto) {
		this.txtNomeProduto.setText(txtNomeProduto);
	}

	public void setTxtporcenteLucroProduto(String txtporcenteLucroProduto) {
		this.txtporcenteLucroProduto.setText(txtporcenteLucroProduto);
	}

	public void setTxtFormaVendaProduto(String txtFormaVendaProduto) {
		this.txtFormaVendaProduto.setText(txtFormaVendaProduto);
	}
}

------------------

Aqui e so pra da Start no JTable

package mostraTela;

import telaCadastra.cad_produto;
import telaCadastra.cadtela;

public class mostraCadProduto {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	//	cadtela t = new cadtela();
	//	t.criarTela();
		
		cad_produto tela = new cad_produto();
		tela.criarTela();

	}

}

8 Respostas

ViniGodoy

Não use layout null. Ele não é multiplataforma, não se comporta direito quanto a tela é redimensionada e não fica alinhado caso o look&feel ou o SO do usuário muda;

Otimização para que? O código está lento? Está tendo algum problema de performance?

Se quer otimizar siga os seguintes passos:

  1. Tenha um problema de performance: Não otimize código que não tem problema;
  2. Use um profiler, como o do Netbeans, para medir o tempo de execução do código e descobrir os pontos que devem ser otimizados. Geralmente, os gargalos estão concentrados em um ou dois pontos;
  3. Substitua o gargalo por algoritmos mais eficientes, ou corrija o código se for o caso.
  4. Somente em último caso, mas em último caso mesmo, abra mão de um código bem estruturado.
  5. Fuja de mitos como “declarar coisas como final deixa o código mais rápido”, “reduzir indireção de métodos”, etc.
G

Bom dia.

O problema está na hora de setar o layout do seu frame, f.setLayout(null); substitua por f.getContentPane().setLayout(null);

G
fis os que os dois pediram mais ainda naum consegui resolver.

deletei o setLayaout(null);

ViniGodoy  e rodei e nadaaaaaaaafiz o q o nosso outro amigo pediogilberto.souza

do esquema f.getContentPane().setLayout(null);

e nadaaaaaaaaaaaaa tb…

ja nao sei o q fazer…

Obrigado pela ajuda mais ainda nao resolvi o meu problema.

G

Eu não reparei que você está adicionando os componentes direto no frame, todo lugar onde você estiver utilizando o f.add, substitua por f.getContentPane().add…
Utilize o container do frame e não o frame diretamente, assim vai dar certo.

ViniGodoy

gilberto.souza:
Eu não reparei que você está adicionando os componentes direto no frame, todo lugar onde você estiver utilizando o f.add, substitua por f.getContentPane().add…
Utilize o container do frame e não o frame diretamente, assim vai dar certo.

Isso só é válido se vc estiver usando uma versão de Java anterior a 5.
Desde o Java 5, não é mais necessário usar o getContentPane().
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#swing

Adicionar no frame automaticamente já faz isso…

G


gilberto.souza wrote:
Eu não reparei que você está adicionando os componentes direto no frame, todo lugar onde você estiver utilizando o f.add, substitua por f.getContentPane().add…
Utilize o container do frame e não o frame diretamente, assim vai dar certo.

Isso só é válido se vc estiver usando uma versão de Java anterior a 5.
Desde o Java 5, não é mais necessário usar o getContentPane().
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#swing

Adicionar no frame automaticamente já faz isso…

utimamente só tenho trabalhado com swing do 1.4x, realmente não tinha visto essa mudança. Tava na hora mesmo.

G

gilberto.souza:

gilberto.souza wrote:
Eu não reparei que você está adicionando os componentes direto no frame, todo lugar onde você estiver utilizando o f.add, substitua por f.getContentPane().add…
Utilize o container do frame e não o frame diretamente, assim vai dar certo.

Isso só é válido se vc estiver usando uma versão de Java anterior a 5.
Desde o Java 5, não é mais necessário usar o getContentPane().
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#swing

Adicionar no frame automaticamente já faz isso…

utimamente só tenho trabalhado com swing do 1.4x, realmente não tinha visto essa mudança. Tava na hora mesmo.

Isso só é válido se vc estiver usando uma versão de Java anterior a 5.
Desde o Java 5, não é mais necessário usar o getContentPane().
http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#swing

Adicionar no frame automaticamente já faz isso…

Entao como eu faço?
:frowning:

G

Você não setou o layout dos seus painels como null.

Criado 27 de março de 2008
Ultima resposta 28 de mar. de 2008
Respostas 8
Participantes 3