tá dando erro. Socorro!

6 respostas
joaofs_18

package estoque;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;
public class Estoque extends JFrame implements ActionListener {

public Label lbfabricante;	

public TextField txfabricante;

public Panel pacima;
public Estoque(){	

super(Estoque);

setSize(200,300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pacima= new Panel (new FlowLayout(FlowLayout.LEFT));
	lbfabricante = new Label ("Fabricante");
	pacima.add(lbfabricante);
	add(pacima,"center");
	txfabricante= new TextField(6);
	pacima.add(txfabricante);
}

public void actionPerformed(ActionEvent e){

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

Estoque a=new Estoque();

a.show();

}

}

tá dando erro aparece isso:

Exception in thread main java.lang.IllegalArgumentException: cannot add to layout: unknown constraint: center

at java.awt.BorderLayout.addLayoutComponent(Unknown Source)

at java.awt.BorderLayout.addLayoutComponent(Unknown Source)

at javax.swing.JRootPane$1.addLayoutComponent(Unknown Source)

at java.awt.Container.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at javax.swing.JFrame.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at estoque.Estoque.(Estoque.java:20)

at estoque.Estoque.main(Estoque.java:30)

mas o programinha nao tem nehum erro só aparece 2 warnings e mais nada.Se alguem puder ajudar.

6 Respostas

doug

Olá
Tenta substituir esse trecho de código

add(pacima,"center");

por esse

add(pacima);

Espero ter ajudado
Flwsss

davidbuzatto

Troque

add(pacima,"center");

Por

add(pacima, BorderLayout.CENTER);
davidbuzatto

thiago.filadelfo:
Olá
Tenta substituir esse trecho de código

add(pacima,"center");

por esse

add(pacima);

Espero ter ajudado
Flwsss

O gerenciador de layout padrão do JFrame é o BorderLayout, sendo assim é preciso dizer onde o componente deve ser inserido no container.
WEST, EAST, NORTH, SOUTH ou CENTER, todas contantes de BorderLayout.

Se for feito como vc disse, o componente sempre será inserido no centro por padrão.

M

davidbuzatto:
thiago.filadelfo:
Olá
Tenta substituir esse trecho de código

add(pacima,"center");

por esse

add(pacima);

Espero ter ajudado
Flwsss

O gerenciador de layout padrão do JFrame é o BorderLayout, sendo assim é preciso dizer onde o componente deve ser inserido no container.
WEST, EAST, NORTH, SOUTH ou CENTER, todas contantes de BorderLayout.

Se for feito como vc disse, o componente sempre será inserido no centro por padrão.

Você tem certeza que o gerenciador de leiaute padrão do JFrame é o BorderLayout? Para mim é o FlowLayout (se estiver errado me corrijam), pois se você não altera o leiaute do JFrame os componentes são adicionados exatamente como se você definisse o gerenciador para FlowLayout.

Como joaofs_18 não definiu um gerenciador de leiaute específico para o JFrame, basta usar o método:

add(pacima);

Como havia dito thiago.filadelfo.

 o método add completo tem três argumentos:

add(Component, Object, int)

Component - o componente a ser adicionado

Object - qualquer objeto que represente uma referência de leiaute

int - a posição em que será inserido (se -1 é adicionado ao final)

Um exemplo:
add(new JLabel("Olá"), BorderLayout.SOUTH, 0);
// ou
add(new JLabel("Olá"), FlowLayout.CENTER, 1);
// veja que isso depende o gerenciador utilizado no JFrame
davidbuzatto

marcobiscaro2112:
Você tem certeza que o gerenciador de leiaute padrão do JFrame é o BorderLayout? Para mim é o FlowLayout (se estiver errado me corrijam), pois se você não altera o leiaute do JFrame os componentes são adicionados exatamente como se você definisse o gerenciador para FlowLayout.

É só dar uma olhada na documentação.

“…
And the child will be added to the contentPane. The content pane will always be non-null. Attempting to set it to null will cause the JFrame to throw an exception. The default content pane will have a BorderLayout manager set on it. Refer to RootPaneContainer for details on adding, removing and setting the LayoutManager of a JFrame.”

http://java.sun.com/javase/6/docs/api/javax/swing/JFrame.html

FlowLayout é padrão do JPanel.

M

Realmente… componente errado…

O content pane padrão tem em gerenciador BorderLayout, como consta na documentação.

Obrigado pela correção.

Criado 4 de janeiro de 2009
Ultima resposta 5 de jan. de 2009
Respostas 6
Participantes 4