Olá galera.
Estou precisando criar uma barra de status em um sistema, alguém já manipulou algo aparecido ?
Tentei fazer com o JPanel, mais não achei legal, se alguém tiver uma idéia, obrigado.
Até mais.
Abraço.
Olá galera.
Estou precisando criar uma barra de status em um sistema, alguém já manipulou algo aparecido ?
Tentei fazer com o JPanel, mais não achei legal, se alguém tiver uma idéia, obrigado.
Até mais.
Abraço.
faz com JDialog.
procura aqui no forum por “JProgressBar”
Barra de status ? JProgressBar ? :roll:
[quote=keller]Barra de status ? JProgressBar ? :roll:
[/quote]
É barra de status mesmo, tipo onde fica o nome do usuário que está logado no sistema, a hora e data.
ela nao vai ser modal?
hummm… vc quer no próprio painel né? bom… eu faria assim:
colocaria uma JProgressBar… com a propriedade setIndeterminate( true ), pra vc noa te q ficar incrementando o valor dela - a barrinha vai ficar de um lado pro outro.
entao, qdo vc iniciasse um processo onde vc precisa visualizar a jprogress, vc inicia uma thread separada ( pq se for na mesma thread, a animação nao ocorre ), constrói ela e poe setVisible( true ), e no final da thread poe de novo pra setVisible(false) e seta pra null…
é apenas uma idéia claro que se vc tiver isso em varios paineis, vc vai fazer um esquema de herança ai…
sorry… viajei… nao era isso que vc perguntou…
mas vc pode incrementar sua barra de status, com a ideia acima =D
[quote=YuriSilva][quote=keller]Barra de status ? JProgressBar ? :roll:
[/quote]
É barra de status mesmo, tipo onde fica o nome do usuário que está logado no sistema, a hora e data.[/quote]
eu uso JToolBar pra fazer esse tipo de barra de status… coloco ela no rodapé do JFrame…
O Swing Application Framework (JSR-296) vem com um exemplo de StatusBar bacana que pode ao menos te inspirar a desenvolver uma própria. Se quiser utilizá-la, você pode, pois é disponibilizada sob LGPL. Mas lembre-se que não há suporte e que terá fazer uso da 296. Você a encontra no pacote example
Veja nessa figura um exemplo de uma StatusBar totalmente baseada na do AppFramework que adaptei à minha situação.
Eu mesmo fiz uma, porque isso não existe nativo do Java. Eu apenas instancio ela e quando vou adicionar ela no Jframe\JPanel que contenha, por exemplo, BorderLayout, é só fazer “JFrame.add(new StatusBar, BorderLayout.SOUTH);”
O código do StatusBar esta abaixo:
package view.util;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
/**
* <p>StatusBar é um componente para trabalhar com barra de status. Muito similar a barra de estatus
* de navegadores de internet (browsers). É composto basicamente por um <b>String</b> status, que
* indica uma mensagem de processamento e uma barra de progressão (<b>JProgressBar</b>).</p>
*
* <p>Seu principal método é o {@link #setStatus(String, int, boolean)}. Para mais informações veja
* a documentação do método.</p>
*
* @author Filipe Luchini
* */
@SuppressWarnings("serial")
public class StatusBar extends JPanel {
private JProgressBar progressBar;
private int progress, loader, delay;
private JLabel statusText;
private String defaulStatusText;
/**
* Construtor padrão.
* */
public StatusBar(){
this.defaulStatusText = "Concluído!";
this.initStatusBar(false);
}
/**
* Construtor no qual pode ser definido o texto de estado padrão da barra de status.
* @param defaultStatusText : texto de estado padrão.
* */
public StatusBar(String defaultStatusText){
this.defaulStatusText = defaultStatusText;
this.initStatusBar(false);
}
/**
* Construtor no qual pode ser definido o texto de estado padrão da barra de status e se, quando
* carregar, vai ser contínua ou não.
* @param defaultStatusText : texto de estado padrão.
* @param indeterminate : deve ser passado <code>true</code> caso você queira que a barra de
* progresso seja contínua.
* */
public StatusBar(String defaultStatusText, boolean indeterminate){
this.defaulStatusText = defaultStatusText;
this.initStatusBar(indeterminate);
}
private void initStatusBar(boolean indeterminate){
this.delay = 7;
this.progress = 0;
this.statusText = new JLabel(defaulStatusText);
this.progressBar = new JProgressBar();
if(indeterminate){
this.progressBar.setIndeterminate(true);
}
this.progressBar.setValue(progress);
this.progressBar.setVisible(false);
this.setLayout(new BorderLayout());
this.add(statusText, BorderLayout.WEST);
this.add(progressBar, BorderLayout.EAST);
}
/**
* <p>Informa qual é o status atual do StatusBar</p>
*
* @param status = texto que indica o status corrente de processo.
* @param load = valor em % (percentual de 0% a 100%) que equivale o processo.
* @param loading = caso seja true então será gerado a aminação de x% a y% da barra de progresso.
* Onde x% é o ultimo estado da barra de procresso e y% (<b>load</b>) é até onde a barra de progresso deve ser
* carregada. Caso seja informado 100% no argumento <b>load</b> então a barra de progresso será
* carregada até o fim e finalizada com o status padrão.
* */
public void setStatus(String status, int load, boolean loading){
if(load < 0 || load > 100){
Exception e = new Exception("O valor de procresso (load) deve estar entre 0% e 100%");
e.printStackTrace();
}else{
if(load == 100){
finalizeLoad();
}else{
statusText.setText(status);
progressBar.setValue(progress);
progressBar.setVisible(true);
if(loading){
load(load);
}else{
progress = loader;
progressBar.setValue(progress);
}
}
}
}
private void load(int load){
loader = load;
Thread progressive = new Thread(new Runnable() {
@Override
public void run() {
for (int i = progress; i < loader; i++) {
progressBar.setValue(i);
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progress = loader;
progressBar.setValue(progress);
}
});
progressive.start();
}
/**
* <p>Finaliza a prograssão de barra de progresso e posiciona o status de processo no status
* padão do {@link StatusBar}.</p>
* */
public void finalizeLoad(){
Thread progressive = new Thread(new Runnable() {
@Override
public void run() {
for (int i = progress; i < 100; i++) {
progressBar.setValue(i);
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progress = 0;
progressBar.setValue(progress);
progressBar.setVisible(false);
statusText.setText(defaulStatusText);
}
});
progressive.start();
}
public int getProgress() {
return progress;
}
public void setProgress(int progress) {
if(progress < 0 || progress > 100){
Exception e = new Exception("O valor de procresso (load) deve estar entre 0% e 100%");
e.printStackTrace();
}else{
this.progress = progress;
if(progress == 100){
finalizeLoad();
}
}
}
/**
* <p>
* Define o tempo de carregamento da barra de progresso.
* </p>
* @param delay : tempo de atraso (em ms).
* */
public void setDelay(int ms){
delay = ms;
}
public String getStatusText() {
return statusText.getText();
}
public void setStatusText(String statusText) {
this.statusText.setText(statusText);
}
public String getDefaulStatusText() {
return defaulStatusText;
}
public void setDefaulStatusText(String defaulStatusText) {
this.defaulStatusText = defaulStatusText;
this.finalizeLoad();
}
}
Ola boa noite,
Pessoal alguem pode me dar um dica de como usar essa classe StatusBar em meu jFrame do projeto Swing?
Não estou sabendo utilizar, agradeço desde ja.
Olá Deciojunior.
Abaixo eu fiz um exemplo de como utilizar a barra de status em um JFrame.
public class Exemplo {
public static void main(String[] args) {
//Cria o Frame.
JFrame frame = new JFrame("Exemplo");
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Cria a barra de status.
StatusBar statusBar = new StatusBar ();
//Adiciona a barra de status no frame.
frame.add(statusBar, BorderLayout.SOUTH);
//Define um determinado status para a barra de status.
statusBar.setStatus("Carregando...", 30, true);
frame.setVisible(true);
}
}
Para saber como utilizar os demais métodos da classe StatusBar basta você olhar o JavaDoc dos métodos.
Espero ter ajudado, qualquer coisa da um toque o/
Zell;
Obrigado pela ajuda vou seguir sua instrução e informo posteriormente o resultado. Ja queria aproveita para agradecer também a distribuição de conhecimento que o forum permite, com certeza quando estiver apto a ajudar estarei postando.
É assim que se fala Deciojunor! o/
Abraço!