Ola Pessoal
Estou com uma dúvida quanto ao Swing
Existe algum tipo de Layout que faça a mesma coisa que o FlowLayout mais ao invés de Horizontal seja Vertical?
por exemplo quero montar um menu ao esquerdo da tela e quero colocar um botão embaixo do outro.
Procure por BoxLayout aqui no Fórum.
O Problema do Box Layout eh que ele nao tem o mesmo efeito do FlowLayout.
Gostaria de saber se ha alguma forma de obter o mesmo efeito do flowLayout porem na vertical
package guj;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.UIManager;
public class TesteBoxLayout extends JFrame {
private JSplitPane splitPane;
private JPanel pnlMenu;
private JPanel pnlContents;
private JButton btnFile;
private JButton btnEdit;
private JButton btnWindow;
private JButton btnHelp;
private Component verticalStrut;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TesteBoxLayout frame = new TesteBoxLayout();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TesteBoxLayout() {
setTitle("Exemplo BoxLayout");
setBounds(100, 100, 450, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout(0, 0));
getContentPane().add(getSplitPane());
}
private JSplitPane getSplitPane() {
if (splitPane == null) {
splitPane = new JSplitPane();
splitPane.setLeftComponent(getPnlMenu());
splitPane.setRightComponent(getPnlContents());
}
return splitPane;
}
private JPanel getPnlMenu() {
if (pnlMenu == null) {
pnlMenu = new JPanel();
pnlMenu.setLayout(new BoxLayout(pnlMenu, BoxLayout.Y_AXIS));
pnlMenu.add(getBtnFile());
pnlMenu.add(getBtnEdit());
pnlMenu.add(getBtnWindow());
pnlMenu.add(getVerticalStrut());
pnlMenu.add(getBtnHelp());
}
return pnlMenu;
}
private JPanel getPnlContents() {
if (pnlContents == null) {
pnlContents = new JPanel();
}
return pnlContents;
}
private JButton getBtnFile() {
if (btnFile == null) {
btnFile = new JButton("File");
btnFile.setAlignmentX(Component.RIGHT_ALIGNMENT);
}
return btnFile;
}
private JButton getBtnEdit() {
if (btnEdit == null) {
btnEdit = new JButton("Edit");
btnEdit.setAlignmentX(Component.RIGHT_ALIGNMENT);
}
return btnEdit;
}
private JButton getBtnWindow() {
if (btnWindow == null) {
btnWindow = new JButton("Window");
btnWindow.setAlignmentX(Component.RIGHT_ALIGNMENT);
}
return btnWindow;
}
private JButton getBtnHelp() {
if (btnHelp == null) {
btnHelp = new JButton("Help");
btnHelp.setAlignmentX(Component.RIGHT_ALIGNMENT);
}
return btnHelp;
}
private Component getVerticalStrut() {
if (verticalStrut == null) {
verticalStrut = Box.createVerticalStrut(20);
}
return verticalStrut;
}
}
OK Funcionou… Obrigado a todos!
Você usou BoxLayout ou FlowLayout mesmo :?:
Só falta colocar [RESOLVIDO] no título do tópico agora.
:thumbup:
Então, na verdade com o Flowlayout não deu certo.
Não consegui o alinhamento vertical, consegui algo semelhante com outro tipo de layout, mas a minha dúvida ainda é:
Eu consigo um alinhamento vertical ao invés de um horizontal com o Flowlayout?
[quote=Caio.Sergio]Então, na verdade com o Flowlayout não deu certo.
Não consegui o alinhamento vertical, consegui algo semelhante com outro tipo de layout, mas a minha dúvida ainda é:
Eu consigo um alinhamento vertical ao invés de um horizontal com o Flowlayout?[/quote]
Já não tinha…
:thumbup:
[quote=Caio.Sergio]Então, na verdade com o Flowlayout não deu certo.
Não consegui o alinhamento vertical, consegui algo semelhante com outro tipo de layout, mas a minha dúvida ainda é:
Eu consigo um alinhamento vertical ao invés de um horizontal com o Flowlayout?[/quote]
Não - veja a figura que está na documentação.
http://docs.oracle.com/javase/6/docs/api/java/awt/FlowLayout.html
A propósito, se em japonês ou chinês (que têm a opção de escrever de cima para baixo, da direita para a esquerda) os botões se comportassem desse jeito (de cima para baixo, da direita para a esquerda) talvez o pessoal da Sun/Oracle houvesse criado um FlowLayout com alinhamento vertical.
Mas como você já deve ter visto em algum filme, tanto em japonês quanto em chinês os sistemas operacionais usam botões, menus etc. que seguem o esquema ocidental (da esquerda para a direita e de cima para baixo). Então não houve necessidade de criar um FlowLayout com alinhamento vertical.
Entretanto, como em árabe e hebraico costuma-se escrever da direita para a esquerda e de cima para baixo, há uma opção do FlowLayout que permite distribuir os componentes da direita para a esquerda:
ComponentOrientation.RIGHT_TO_LEFT
Entaglement
Ja havia visto isso sim!
Era somente a dúvida de que poderia ser configurado de forma vertical.
De qualquer forma Obrigado.