Ajude me. O setBounds() nao roda

1 resposta
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.

ja usei o .setlayout(null);... //f.getContentPane().setLayout(null); e nao funciono tb.

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

AJUDEM-MEEEEEEEEEEEEEEEEEEEEE

1 Resposta

B

Você usou o setLayout(null); para o JFrame…
Só que os seus campos da interface vc coloca em um painel (no caso “painelProduto”) e esse painel produto não está com o layout definido para null.
Para dar certo o setBounds dos seus componentes, vc deveria fazer: painelProduto.setLayout(null); assim o painel ficaria sem nenhum layout e o setBounds dos campos funcionaria.
Para a interface principal, eu não colocaria o setLayout(null) senão toda vez que o tamanho da janela do seu programa mudasse, vc teria que redimensionar o seu painel para ele ocupar todo o espaço. Então, dependendo das suas necessidades, para a janela principal eu usaria o layout BorderLayout.
Mas eu não aconselho vc a usar layout nulo e sim usar um gerenciador de layouts (como BorderLayout, GridBagLayout, etc)… E para facilitar a sua vida, eu construiria a janela usando algum IDE (no meu caso eu uso o NetBeans apenas para desenhar a interface gráfica e o eclipse para fazer todo o resto). Isso te economizaria muito tempo e aumentaria a sua produtividade ao invés de fazer toda a janela manualmente.
Agora se vc realmente quiser usar o layout null, eu aconselho o uso de JScrollPane, pq se o usuário diminuir o tamanho do seu aplicativo, ele não enxergaria todos os campos do seu formulário. Usando o JScrollPane, se o usuário diminuir a janela, o seu formulário ficaria com scroll e o usuário poderia navegar na interface sem problemas…

Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 1
Participantes 2