É o seguinte amigos, desenvolvi uma telinha básica aqui, porem não sei como inserir um plano de fundo (imagem) na parte cinza da tela. Só pra completar essa imagem eu queria sobre toda a parte cinza da tela. Pra ficar mais facil, postarei o seguinte código pra facilitar os amigos.
importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;publicclassJanelaPrincipalextendsJFrameimplementsActionListener{privateJMenuBarmenubar1;privateJMenuarquivo,cadastro;privateJMenuItemsair,clientes;publicJanelaPrincipal(){setLayout(null);setTitle("Sistema de Cadastro 1.0");setBounds(250,100,800,600);menubar1=newJMenuBar();arquivo=newJMenu("Arquivo");sair=newJMenuItem("Sair");sair.addActionListener(this);arquivo.add(sair);menubar1.add(arquivo);cadastro=newJMenu("Cadastro");clientes=newJMenuItem("Clientes");clientes.addActionListener(this);cadastro.add(clientes);menubar1.add(cadastro);setJMenuBar(menubar1);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==sair)System.exit(0);}}
importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;publicclassJanelaPrincipalextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privateJMenuBarmenubar1;privateJMenuarquivo,cadastro;privateJMenuItemsair,clientes;publicJanelaPrincipal(){setTitle("Sistema de Cadastro 1.0");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);menubar1=newJMenuBar();arquivo=newJMenu("Arquivo");sair=newJMenuItem("Sair");sair.addActionListener(this);arquivo.add(sair);menubar1.add(arquivo);cadastro=newJMenu("Cadastro");clientes=newJMenuItem("Clientes");clientes.addActionListener(this);cadastro.add(clientes);menubar1.add(cadastro);setJMenuBar(menubar1);ajustaFundo("images/fundo.png");add(newJButton("Botão 1"));add(newJLabel("Label 1"));setSize(550,500);setLocationRelativeTo(null);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==sair)dispose();}publicvoidajustaFundo(Stringarquivo){JLabelfundo=newJLabel(newImageIcon(arquivo));fundo.setLayout(newFlowLayout());setContentPane(fundo);}}
Dica: evite usar null layout. Invista um tempo estudando sobre gerenciadores pois vale muito o esforço.
Dica 2: evite usar System.exit() e EXIT_ON_CLOSE pois isso mata a JVM inteira, interrompendo processos que ainda podem estar executando alguma tarefa importante.
Thiago_de_Paula_Bese
Obrigado pela dica amigo. Vou estudar seu exemplo.
Obrigado xD
Thiago_de_Paula_Bese
marcobiscaro2112:
Um exemplo:
importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;publicclassJanelaPrincipalextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;privateJMenuBarmenubar1;privateJMenuarquivo,cadastro;privateJMenuItemsair,clientes;publicJanelaPrincipal(){setTitle("Sistema de Cadastro 1.0");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);menubar1=newJMenuBar();arquivo=newJMenu("Arquivo");sair=newJMenuItem("Sair");sair.addActionListener(this);arquivo.add(sair);menubar1.add(arquivo);cadastro=newJMenu("Cadastro");clientes=newJMenuItem("Clientes");clientes.addActionListener(this);cadastro.add(clientes);menubar1.add(cadastro);setJMenuBar(menubar1);ajustaFundo("images/fundo.png");add(newJButton("Botão 1"));add(newJLabel("Label 1"));setSize(550,500);setLocationRelativeTo(null);}publicvoidactionPerformed(ActionEvente){if(e.getSource()==sair)dispose();}publicvoidajustaFundo(Stringarquivo){JLabelfundo=newJLabel(newImageIcon(arquivo));fundo.setLayout(newFlowLayout());setContentPane(fundo);}}
Dica: evite usar null layout. Invista um tempo estudando sobre gerenciadores pois vale muito o esforço.
Dica 2: evite usar System.exit() e EXIT_ON_CLOSE pois isso mata a JVM inteira, interrompendo processos que ainda podem estar executando alguma tarefa importante.
Cara, não consegui entender essa variável estatica
privatestaticfinallongserialVersionUID=1L;
você poderia me ajudar?
Agradeço.
E
erato690
Cara isso e uma variavel que e usada em serializaçao !!
ela fala e versao atual de sua classe .
Thiago_de_Paula_Bese
erato690:
Cara isso e uma variavel que e usada em serializaçao !!
ela fala e versao atual de sua classe .
Desculpa a inocencia cara, mas ela é obrigatória na implementação, no caso acima?
E
erato690
nao !!!
a nao ser que voçe deseja usar serializaçao em sua classe mas caso nao!!!
da uma lida amigo para ver como ela funciona creio que vai te ajudar muito!!!
Thiago_de_Paula_Bese
Obrigado.
M
marcobiscaro2112
Só complementando: não é obrigatório, mas se você não usar o compilador gerará um warning pois a superclasse (JFrame) implementa Serializable e define um serialVersionUID e a subclasse (a sua classe) não. Eu costumo usar mas, como já dito, não é obrigatório a menos que você vá serializar sua classe.