Gerenciadores de layout

bom galera o lance é o seguinte no programinha abaixo eu coloquei um Jlabel no border layout norte e adicionei uma combobox e a combobox so aparece um pedaço ficou cortada gostaria de resolver este problema outra coisa é que quando eu maximizo ou redimensiono a janela meus componentes saem do lugar de origem tipo botão que está em baixo passa para o lado direito queria corrigir isto tb … estas coisas desde já agradeço ajuda de vcs

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JPanel;
public class SorteGrande extends JFrame{
private JButton   sorteio,sair;
private JLabel    linstrucao;
private JComboBox opcao;
private JPanel    painelnorte,painelcenter,painelsul;	

public SorteGrande(){
	super ("Sorte Grande v.01")	;
	setLayout(new BorderLayout());
	//Tratamento JButtons
	sorteio = new JButton("Sortear");
	sair    = new JButton("Sair");
	//Tratamento JComboBox
	String escolha[]={"Mega Sena","Loto Mania","Terno","Passe","Milhar"};
	opcao=new JComboBox(escolha);
	//Tratamento  Painel
	painelcenter =new JPanel();
	painelnorte  =new JPanel();
	painelsul    =new JPanel();
	//Tratamento do label
	linstrucao   =new JLabel("Escolha a opção para gerar o palpite");
	//Tratamento JTextArea
	
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setSize(250,300);
	setLocationRelativeTo(null);	
	//Adicionando paineis
	add(painelnorte,  BorderLayout.NORTH);
	add(painelcenter, BorderLayout.CENTER);
	add(painelsul,    BorderLayout.SOUTH);
	//painel nort
	painelnorte.  add(linstrucao);
	painelnorte.  add(opcao);
	
	//painel sul
	painelsul.    add(sorteio);
	painelsul.    add(sair);
	setVisible(true);
	}
public static void main(String args[])
{
SorteGrande ref = new SorteGrande();
  ref.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
}	
	
	

}

Dá uma redimensionada na tela:

E quando vc aumenta/diminue, os componentes segue as coordenadas impostas pelo layout que vc escolheu. Caso não queira que isso acontece, não escolha um layout.

Marck.

olha, além de redimensionar a tela pra um tamanho que apareçam todos os componentes vc tem que colocar na sua janela setResizeble(false) para impedir que ela seja redimensionada pelo usuário e todos os seus componentes mudem de lugar.

Obs:

public static void main(String args[])
 {
 SorteGrande ref = new SorteGrande();
   ref.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//Essa parte é desnecessária pois você já chama isso no construtor	
 }

Alias vocêpodia melhorar um poquinho isso pra algo assim

public static void main(String... args){ javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ new SorteGrande(); } } }

No lugar de setSize você pode usar o método pack pra ajustar o tamanho do frame automaticamente.

T+

como ficaria o meu codigo com este metodo pack para ajustar altomaticamente a janela??

//Aqui
pack();
setVisible(true);

bom eu aumentei a janela e não resolveu o problema o que aconteceu foi que o ComboBox passou para frente do label

sendo que na verdade eu quero que o label fique por cima e o ComboBox abaixo dele no Border Norte utilizando o pack() tambem não resolveu o problema será que tenho que fazer com outro gerenciador de layout??

Porque não tenta usar o Netbeans?
Creio que iria ajudar bastante!!
Valew!

Vê se é isso que você quer:

[code]import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JPanel;

public class SorteGrande extends JFrame {
private JButton sorteio, sair;
private JLabel linstrucao;
private JComboBox opcao;
private JPanel painelsul;

public SorteGrande() {
    super("Sorte Grande v.01");

    painelsul = new JPanel();

    sorteio = new JButton("Sortear");   
    sair = new JButton("Sair");   

    String escolha[] = {"Mega Sena","Loto Mania","Terno","Passe","Milhar"};   
    opcao = new JComboBox(escolha);           

    linstrucao = new JLabel("Escolha a opção para gerar o palpite");                  

    add(linstrucao, BorderLayout.NORTH);   
    add(opcao, BorderLayout.CENTER);
    add(painelsul, BorderLayout.SOUTH);
   
    painelsul.add(sorteio);   
    painelsul.add(sair);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
    pack();
    setLocationRelativeTo(null);                  
    setVisible(true);   
}   

public static void main(String args[]) {   
    SorteGrande ref = new SorteGrande();   
}         

}[/code]

T+

bom o porque de não utilizar o netbeans, é simplesmente porque estou começando a lidar com java e acho que é melhor aprender a linguagem, ao inves de aprender a usar a ferramenta e ficar preso a ela,
quando comecei a mecher com html aprendi pelo dreamweaver e para largar ele foi uma luta!!!
mas agradeço pela dica.

diego funcionou da forma que eu queria oq vc mudou e qual a logica deste negocio???

Bem, o JFrame já vem com um JPanel, e esse JPanel já vem configurado com o BorderLayout, e o Borderlayout tem 5 áreas:

NORTH
CENTER
EAST
WEST
SOUTH

Então eu adicionei o JLabel no norte, o JComboBox no centro, e um painel no sul. Ai depois eu adicionei os 2 JButton’s no painel que está no sul.

obs.: o layout padrão de um JPanel é o FlowLayout, por isso que os 2 botões ficam centralizados.

Entendeu?

T+

[quote=filipibh]bom o porque de não utilizar o netbeans, é simplesmente porque estou começando a lidar com java e acho que é melhor aprender a linguagem, ao inves de aprender a usar a ferramenta e ficar preso a ela,
quando comecei a mecher com html aprendi pelo dreamweaver e para largar ele foi uma luta!!!
mas agradeço pela dica.[/quote]

Tem razão amigo…retiro o que eu disse então!!
Valew!

JFrame já vem com um JPanel, e esse JPanel já vem configurado com o BorderLayout

o layout padrão de um JPanel é o FlowLayout, por isso que os 2 botões ficam centralizados.

acima vc disse que o Jpanel vem com borderlayout e depois falow que o padrao do Jpanel é o flow layout

entendi so me confirma uma coisa o Jpanel tem como Default border layout ou flowlayout

valew

Aproveitando a discussão sobre gerenciadores de layouts, gostaria de saber se, eu não utilizar o gerenciador, terei problemas mesmo utilizando outro pc com a mesma plataforma? Eu queria colocar os componentes manualmente e distribuí-los na tela sem utilização dos gerenciadores. Aí me veio essa, se permanecerão organizados da forma que eu coloquei, instalando meu sistema em um outro computador com a mesma plataforma.

Aguardo…