Alguem posta um exemplo de codigo usando vetor de botoes,onde seja possivel fazer uma interface parecida com essa:
Essa interface possui inumeros botoes que representam apartamentos onde ficam dentro de um scroll.
Você vai fazer isso programáticamente:
http://download.oracle.com/javase/tutorial/uiswing/components/button.html
eu ja tenho noção no java,mas queria um exemplo onde tenha vetor de botoes.
Dê uma olhada na classe GridLayout.
obrigado,viniGody.
Mas tenho uma duvida,quando executo a interface os botoes ficam tipo invisiveis ,mas na hora q passo mouse em cima eles aparecem.
estou usando Grid Layout dessa forma:
Vector<String> dados = new Vector<String>();
public JButton btn;
JScrollPane scroll;
JPanel pBotoes;
con.conecta();
con.executeSQL("Select * from Apartamento");
try{
while(con.resultset.next()){
dados.add(con.resultset.getString("APARTAMENTO"));
}
}catch(SQLException errro){
System.out.println(errro);
}
// painel com os comandos
pBotoes = new JPanel(new GridLayout(4,4));
for(int e=0;e<dados.size();e++){
add_botao(e,dados.get(e));
}
// painel do JFrame
this.setLayout(new BorderLayout());
scroll=new JScrollPane();
scroll.setSize(100,50);
this.getContentPane().add(scroll.add(pBotoes), BorderLayout.NORTH);
public void add_botao(int e,String apart){
btn=new JButton(apart);
try{
con.executeSQL("Select * from Apartamento where Apartamento='"+apart+"'");
con.resultset.first();
String status=con.resultset.getString("STATUS");
System.out.println(apart+":"+status);
}catch(SQLException error){
}
btn.setVisible(true);
String url="";
if(status.equals(("Livre"))){
url="/livre.png";
}
if(status.equals(("Reservado"))){
url="/reservado.png";
}
if(status.equals(("Ocupado"))){
url="/ocupado.png";
}
btn.setIcon(new ImageIcon(url));
pBotoes.add(btn);
//btn.setSelected(true);
}
Certifique-se que o método setVisible não é chamado no construtor, o ideal é que ele fique fora, ou na última linha do construtor.
Se os botões são adicionados com o form já aberto, chame o método validate() do painel toda vez que modifica-lo.
Vini Resolvi os problemas acima,mas agora surgiu uma certa necessidade,como eu poderia limpar todos os botoes dentro do form e executar o metodo novamente assim nando um refresh nos apartamentos?
public void cria_botao(int e,String apart){
// btn=new JButton(apart);
button[e]=new JButton(apart);
try{
con.executeSQL("Select * from Apartamento where Apartamento='"+apart+"'");
con.resultset.first();
String status=con.resultset.getString("STATUS");
System.out.println(apart+":"+status);
button[e].setVisible(true);
String url="";
if(status.equals(("Livre"))){
url="/mastermotel/livre.png";
}
if(status.equals(("Reservado"))){
url="/mastermotel/reservado.png";
}
if(status.equals(("Ocupado"))){
url="/mastermotel/ocupado.png";
}
button[e].setIcon(new javax.swing.ImageIcon(getClass().getResource(url)));
button[e].setPreferredSize(new Dimension(20,20));
button[e].setFont(new Font("Arial",Font.BOLD,11));
pBotoes.add(button[e]);
button[e].setHorizontalTextPosition(SwingConstants.CENTER);
button[e].setVerticalTextPosition(SwingConstants.BOTTOM);
}catch(SQLException error){
}
//btn.setSelected(true);
}
public void inseri_botao(){
con.conecta();
con.executeSQL("Select * from Apartamento");
try{
while(con.resultset.next()){
dados.add(con.resultset.getString("APARTAMENTO"));
}
}catch(SQLException errro){
System.out.println(errro);
}
// painel com os comandos
pBotoes = new JPanel(new GridLayout( dados.size()/5,5));
button=new JButton[20];
this.setLayout(new BorderLayout());
pBotoes.setSize(880,230);
jScrollPane1.setSize(new Dimension(920,707));
jPanel2.add(pBotoes, BorderLayout.PAGE_START);
for(int e=0;e<dados.size();e++){
cria_botao(e,dados.get(e));
final Integer bt=e;
button[e].addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent ae ) {
try{
con.executeSQL("Select * from Apartamento where Apartamento='"+button[bt].getText()+"'");
con.resultset.first();
codapto=con.resultset.getString("CODAPTO");
statusapto=con.resultset.getString("STATUS");
System.out.println("ActionPerfomed:"+codapto+":"+button[bt].getText()+"\nButton:"+bt+"\nButtonCount:"+dados.size());
}catch(SQLException error){
}
}
}
);
button[e].setFocusable(true);
}
}
Chame removeAll no seu JPanel:
http://download.oracle.com/javase/6/docs/api/java/awt/Container.html#removeAll()