por exemplo… quando eue stiver fazendo um cadastro de pessoa por exeplo… ao inves de eu colocar um JOptionPane eu queria colocar
em baixo na tela… Salvo com sucesso e ficar por uns 5 segundos essa mesnagem no status pro usuario saber que foi cadastrado com sucesso,
pq se eu colocar um JOptionPane seria desagradavel para o usuario ficar recebendo toda hora essa mensagem, já com uma barra de status ele iria
poder começar um novo cadastro sem perder tempo…
por exemplo… quando eue stiver fazendo um cadastro de pessoa por exeplo… ao inves de eu colocar um JOptionPane eu queria colocar
em baixo na tela… Salvo com sucesso e ficar por uns 5 segundos essa mesnagem no status pro usuario saber que foi cadastrado com sucesso,
pq se eu colocar um JOptionPane seria desagradavel para o usuario ficar recebendo toda hora essa mensagem, já com uma barra de status ele iria
poder começar um novo cadastro sem perder tempo…
sera que tem como fazer isso??
Obrigado!!!
Não sei se tem um jeito melhor, mas você pode fazer isso com um label que inicialmente fica invisível depois quando for exibir a mensagem tu seta o texto nele, para fazer com que o label fique na tela apenas por 5 segundos dê um sleep na thread, segue o exemplo:
publicclassJanelaextendsJFrame{/** * A constante serialVersionUID */privatestaticfinallongserialVersionUID=-6391611250034404253L;privateJLabellabel=newJLabel("");privateJButtonbotao=newJButton("Clique");publicJanela(){this.setSize(300,150);this.setTitle("Exemplo");this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);this.label.setVisible(false);this.label.setHorizontalAlignment(JLabel.CENTER);this.botao.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEventae){dormir();}});this.setLayout(newBorderLayout());this.add(botao,BorderLayout.CENTER);this.add(label,BorderLayout.SOUTH);}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){newJanela();}});}publicvoiddormir(){try{Thread.sleep(5000);this.label.setText("Cadastro realizado com sucesso.");this.label.setVisible(true);}catch(InterruptedExceptione){e.printStackTrace();}}}
M
marcos.stuchi
dessa maneira deu certo, só nao consegui deixar a mensagem por 5 segundos…
vc teria como me explicar melhor como eu deixo a mensagem durante 5 segundos?
F
Fexx
Tente assim:
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.SwingUtilities;importjavax.swing.UIManager;importorg.dyno.visual.swing.layouts.Constraints;importorg.dyno.visual.swing.layouts.GroupLayout;importorg.dyno.visual.swing.layouts.Leading;//VS4E -- DO NOT REMOVE THIS LINE!publicclassBarraextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJLabeljLabel0;privateJButtonjButton0;privatestaticfinalStringPREFERRED_LOOK_AND_FEEL="javax.swing.plaf.metal.MetalLookAndFeel";publicBarra(){initComponents();}privatevoidinitComponents(){setLayout(newGroupLayout());add(getJLabel0(),newConstraints(newLeading(47,10,10),newLeading(190,10,10)));add(getJButton0(),newConstraints(newLeading(53,10,10),newLeading(60,10,10)));setSize(320,240);}privateJButtongetJButton0(){if(jButton0==null){jButton0=newJButton();jButton0.setText("jButton0");jButton0.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){jButton0ActionActionPerformed(event);}});}returnjButton0;}privateJLabelgetJLabel0(){if(jLabel0==null){jLabel0=newJLabel();jLabel0.setText("Bem-Vindo");}returnjLabel0;}privatestaticvoidinstallLnF(){try{StringlnfClassname=PREFERRED_LOOK_AND_FEEL;if(lnfClassname==null)lnfClassname=UIManager.getCrossPlatformLookAndFeelClassName();UIManager.setLookAndFeel(lnfClassname);}catch(Exceptione){System.err.println("Cannot install "+PREFERRED_LOOK_AND_FEEL+" on this platform:"+e.getMessage());}}/** * Main entry of the class. * Note: This class is only created so that you can easily preview the result at runtime. * It is not expected to be managed by the designer. * You can modify it as you like. */publicstaticvoidmain(String[]args){installLnF();SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){Barraframe=newBarra();frame.setDefaultCloseOperation(Barra.EXIT_ON_CLOSE);frame.setTitle("Barra");frame.getContentPane().setPreferredSize(frame.getSize());frame.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);}});}privatevoidjButton0ActionActionPerformed(ActionEventevent){jLabel0.setText("Cadastrado com sucesso");threadR(jLabel0);}publicvoidthreadR(finalJLabellabel){ThreadtThread=newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(5000);}catch(InterruptedExceptione){e.printStackTrace();}repaint();label.setText("");}});tThread.start();}}
teria como me passar o link pra baixar essa biblioteca pra eu fazer testes?
F
Fexx
Use apenas isso, o resto vc inseri em sua aplicação.
privatevoidjButton0ActionActionPerformed(ActionEventevent){//Aqui é o evento de quando clicar em um botãojLabel0.setText("Cadastrado com sucesso");threadR(jLabel0);}publicvoidthreadR(finalJLabellabel){ThreadtThread=newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(5000);}catch(InterruptedExceptione){e.printStackTrace();}repaint();label.setText("");}});tThread.start();}}
F
Fexx
Implementei usando o código do cara acima, veja:
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.SwingUtilities;publicclassJanela3extendsJFrame{/** * A constante serialVersionUID */privatestaticfinallongserialVersionUID=-6391611250034404253L;privateJLabellabel;privateJButtonbotao=newJButton("Clique");publicJanela3(){label=newJLabel("");this.setSize(300,150);this.setTitle("Exemplo");this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);this.setVisible(true);this.label.setVisible(true);this.label.setHorizontalAlignment(JLabel.CENTER);this.botao.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEventae){label.setText("Cadastrado com sucesso");threadR(label);}});this.setLayout(newBorderLayout());this.add(botao,BorderLayout.CENTER);this.add(label,BorderLayout.SOUTH);}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){newJanela3();}});}publicvoidthreadR(finalJLabellabel){ThreadtThread=newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(5000);}catch(InterruptedExceptione){e.printStackTrace();}repaint();label.setText("");}});tThread.start();}}
Boa sorte.
M
marcos.stuchi
deu certo pessoal…
com esse codigo
privatevoidjButton0ActionActionPerformed(ActionEventevent){//Aqui é o evento de quando clicar em um botão jLabel0.setText("Cadastrado com sucesso");threadR(jLabel0);}publicvoidthreadR(finalJLabellabel){ThreadtThread=newThread(newRunnable(){@Overridepublicvoidrun(){try{Thread.sleep(5000);}catch(InterruptedExceptione){e.printStackTrace();}repaint();label.setText("");}});tThread.start();}