Bem eu gostaria de saber como faço para exibir botoes referente as letras de A a Z em jframe na forma horizontal, sendo que a dimensao do meu form só permite exibir por exemplo 10 letras (lado a lado) em paniel com layout flowlayout. Tenho testado antes inserir este painel em JScrollPane, porem nao obtive o resultado desejado. Alguém sabe de um componente que resolveria a minha situacao ??
Olha, vou dar uma resposta bem vaga porque você não postou o código.
Tente usar o GridLayout(x,y)
ele recebe como parâmetros dois inteiros que representam um grid. O problema que ele vai esticar os campos adicionados a ele quanto maior for o tamanho do Painel contêiner. Tente criar um painel com um tamanho definido e atribuir este layout e os itens a ele.
Se tiver um pouco mais de experiência, use um gerenciador de Layout externo, como o MigLayout.
Abraço e bom estudo.
E
entanglement
packageguj;importjava.awt.BorderLayout;publicclassJFrameBotoesAaZextendsJFrame{privateJPanelcontentPane;/** * Launch the application. */publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{JFrameBotoesAaZframe=newJFrameBotoesAaZ();frame.setVisible(true);}catch(Exceptione){e.printStackTrace();}}});}/** * Create the frame. */publicJFrameBotoesAaZ(){setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100,100,450,300);contentPane=newJPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));contentPane.setLayout(newBorderLayout(0,0));setContentPane(contentPane);contentPane.add(getPanel(),BorderLayout.SOUTH);}privateJButton[]buttons=newJButton[26];privateJPanelpanel;privateJScrollPanescrollPane;privateJPanelpanel_1;privateJButtonbtnNewButton_1;privateJPanelgetPanel(){if(panel==null){panel=newJPanel();panel.setLayout(newBorderLayout(0,0));panel.add(getScrollPane(),BorderLayout.CENTER);}returnpanel;}privateJScrollPanegetScrollPane(){if(scrollPane==null){scrollPane=newJScrollPane(getPanel_1_1());scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);}returnscrollPane;}privateJPanelgetPanel_1_1(){if(panel_1==null){panel_1=newJPanel();panel_1.setBorder(newEmptyBorder(0,0,20,0));panel_1.setLayout(newBoxLayout(panel_1,BoxLayout.X_AXIS));for(charch='A';ch<='Z';++ch){buttons[ch-'A']=newJButton(""+ch);panel_1.add(buttons[ch-'A']);}}returnpanel_1;}}
O
o_0
Amigos obrigado, antes eu havia resolvido usando o metodo setMargin, onde ele diminui o botao assim todos couberam na tela. mas brigadao pela dica!!
De fato é um pouco tosco ter de ficar rolando um painel só para poder pegar um botão. É melhor ter botões menores (como você fez) ou reservar um espaço maior para os botões ( o que você precisaria fazer se tivesse de usar um touch screen ).
P
philliparente
Uma dica, fuja correndo destes métodos setMargin, setBounds e etc…
Tente usar um conjunto de layouts em diferentes painéis para conseguir um efeito desejado!