Fala moçada blz?
Alguém sabe como deixar o conteúdo no topo da janela com a classe JFrame. Por padrão o conteúdo é alinhado no meio da janela (Foi isso que eu entendi fuçando a Internet).
A todos que reponderem agradeço desde já.
Fala moçada blz?
Alguém sabe como deixar o conteúdo no topo da janela com a classe JFrame. Por padrão o conteúdo é alinhado no meio da janela (Foi isso que eu entendi fuçando a Internet).
A todos que reponderem agradeço desde já.
Bom dia!
Dica: leia sobre layouts!
Tem diversos, cada um mais ou menos adequados para o q vc precisa!
FlowLayout, AbsoluteLayout, GridLayout, GridBagLayout (recomendado), dentre outros!
Tem um tuto sobre gridbag: http://javafree.uol.com.br/artigo/5792/Tudo-sobre-o-GridBagLayout.html
Se vc associar gridbaglayout com panels no JFrame vai ficar 200% bom!
Dúvidas, pregunte!
Olá Tkx,
na realidade eu queria deixar o texto no topo com os próprios recursos da classe Jframe. Segue um exemplo abaixo para melhor ilustrar minha dúvida.
import javax.swing.*;
public class Janela extends JFrame {
public Janela() {
this.setTitle("Janela com JFrame");
this.setVisible(true);
this.setSize(600,400);
[b]this.add(new JLabel("Como deixar esse texto no topo da janela"));[/b]
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main ( String [] args ) {
new Janela();
}
}
Bom... só com os componentes do JFrame, só com muita POG!
Não é difícil usar layouts!
Veja sua janela-exemplo com border layout:
import java.awt.BorderLayout;
import javax.swing.*;
public class Janela extends JFrame {
private BorderLayout border = new BorderLayout();
public Janela() {
this.setTitle("Janela com JFrame");
this.setVisible(true);
this.setSize(600, 400);
this.setLayout(border);
this.add(new JLabel("Como deixar esse texto no topo da janela"), BorderLayout.NORTH);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Janela();
}
}
PHPimenta...
Coloquei em um panel o label e ficou alinhado superior...
mas sem um layout vai complicar pra vc colocar outros componentes na janela!
import javax.swing.*;
public class Janela extends JFrame {
public Janela() {
super("Janela com JFrame");
this.setVisible(true);
this.setSize(600, 400);
JPanel panel = new JPanel();
panel.add(new JLabel("Como deixar esse texto no topo da janela"));
this.add(panel);
}
public static void main(String[] args) {
new Janela().setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
Suportar diferentes layout managers é um recurso da classe JFrame! Faço minhas as palavras do tkx, aprenda a usar os layouts.
Eventualmente você vai ouvir falar do setBounds e setLayout(null). Fuja disso! Apesar de deixar vc dar a posição exata de cada componente, não vai deixar seu usuário redimensionar as janelas e nem será multiplataforma. Aprenda os layout managers, dá um pouquinho mais de trabalho, mas o resultado mais do que compensa. 
Olá pessoal,
ai está o mesmo código utilizando o Gerenciador de Layout GridBagLayout, mas o texto ainda continua no meio da tela.
import java.awt.*;
import javax.swing.*;
public class Janela extends JFrame {
public Janela() {
this.setTitle("Janela com JFrame");
this.setVisible(true);
this.setSize(600,400);
JPanel painel = new JPanel();
painel.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
cons.gridx = 0; //Coluna
cons.gridy = 0; //Linha
cons.gridwidth = 1;
painel.add(new JLabel("Como deixar esse texto no topo da janela"), cons);
this.add(painel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main ( String [] args ) {
new Janela();
}
}
Bom... o gridbag eu dei a dica pq é um dos mais poderosos, e dos menos triviais!
O exemplo q t dei com border layout resolveria! Mas tou mandando um exemplo com gridbag!
import java.awt.*;
import javax.swing.*;
public class Janela extends JFrame {
public Janela() {
this.setTitle("Janela com JFrame");
this.setVisible(true);
this.setSize(600,400);
JPanel painel = new JPanel();
painel.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
cons.gridx = 0; //Coluna
cons.gridy = 0; //Linha
cons.gridwidth = 1;
cons.weighty = 0.05; //adicionado para ocupar 5% do espaço
painel.add(new JLabel("Como deixar esse texto no topo da janela"), cons);
cons.weighty = 0.95; //adicionado um panel vazio para ocupar 95% do espaço, completando 100%
//Observar que está na linha 1 (gridy=1), e o anterior na linha 0 (gridy=0)
cons.gridy = 1;
painel.add(new JPanel(),cons);
this.add(painel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main ( String [] args ) {
new Janela();
}
}
Valeu Tkx, muito obrigado por tirar minha dúvida.
Disponha! Não se esqueça de editar o título do tópico e colocar [RESOLVIDO]
Mais dúvidas não hesite em perguntar!