O que é um rótulo ocupado?
O ícone é utilizado para descrever uma tarefa que está em execução, que é de comprimento indeterminado. A tarefa pode demorar 10 minutos ou 10 segundos, não há nenhuma maneira de saber, eo usuário não pode realmente ter uma expectativa de quanto tempo esperar.
SwingX fornece uma implementação dessa funcionalidade na forma de JXBusyLabel e BusyPainter . Você pode usar o rótulo ocupado apenas como você faria com um normal, JXLabel , exceto que você pode adicionar um pintor a ele, que controla a pintura e animação do próprio rótulo ocupado.
Se você estiver usando versão v0.9.1 marco, então você ainda terá JXBusyLabel, mas um monte de funcionalidade descrita neste tutorial não estará disponível para você. Por que você deve baixar a última versão da API SwingX. Não se preocupe, uma compilação que trabalha está incluída nos arquivos do projeto que você pode baixar no final deste tutorial .
Exemplo de código fonte
No exemplo a seguir, vou criar dois componentes JXBusyLabel, que eu vou colocar em um JXPanel. Um irá trabalhar com versões mais antigas SwingX (a etiqueta simples) eo rótulo complexo vai exigir mais recente lançamento SwingX (após 0.9.1). Aqui está o que parece:
Este exemplo cria dois rótulos ocupado, uma simples e outra complexa. O rótulo simples ocupado irá trabalhar com versões mais antigas do SwingX (0.9.1), mas a um complexo requer compilações posteriores. Ambos os rótulos ocupadas começar desativado, e como você pode ver na imagem, que mistura no fundo quando eles são desativados. Quando você clica no botão "Start / Stop", que permite que os rótulos, e chama setBusy (true) sobre eles. Isto faz com que comece a girar e ficar animado. Quando você clica no botão novamente, o setBusy (false) método é chamado, parando a animação;eles ainda estão ativadas, mas não animado.
Etiqueta simples ocupado
Aqui está o código para criar um JXBusyLabel simples:
|
O código é muito simples. É como criar um JLabel simples. Note que não é possível definir o tamanho deste JXBusyLabel usando esse construtor. Na verdade, esta é uma das razões pelas quais você deve usar a última versão do SwingX, que adiciona um novo construtor e muito mais funcionalidades para este componente. Com esse código resulta em um rótulo ocupado que se parece com isso:
Rótulo complexo ocupado
Aqui está o código para criar um JXBusyLabel mais complexa:
|
Há um par de coisas a notar sobre este código:
- Quando você cria o JXBusyLabel, você pode passar um objeto Dimension com ele, para especificar o tamanho da etiqueta ocupado.
- A fim de mudar o visual padrão do rótulo ocupado, você tem que aproveitar a classe BusyPainter, que na verdade controla o que o rótulo ocupado parece (fundo de destaque e cores, formato das entranhas de etiquetas, etc), e como ele anima (animação velocidade, etc). A boa notícia é que você não tem que codificar isso com a mão! Jan Haderka foi gentil o suficiente para fornecer um programa que permite que você configure tudo isso visualmente, e depois ele simplesmente cospe o código que você precisa inserir no seu programa! Eu recomendo que você jogar com o programa de Janeiro e tentar coisas diferentes; você vai se surpreender os diferentes tipos de rótulos ocupados você pode vir até com ... ele é limitado pela sua imaginação.
- Você pode alterar as cores utilizadas pelo pintor ocupado usando setBaseColor () e setHighlightColor (). A cor base é a "base" cor da etiqueta ocupado, ea cor de destaque é o que é pintado sobre ele periodicamente. Então, se você usar uma cor de base de luz azul, e cor de destaque de laranja, você começa algo como isto:
Resto do código
Além dos rótulos ocupados, não há outra JXLabel usado neste exemplo que usa um pintor e um ícone:
Aqui está o código que torna isso possível:
|
Há algumas coisas a notar sobre este código:
- Eu costumava HTML para definir o texto deste rótulo, para que eu pudesse inserir uma quebra de linha.
- O pintor que serve para tornar o fundo desta etiqueta usa um simples gradiente linear 2 stop.
- Eu usei um EmptyBorder em torno da etiqueta para dar mais espaço ao redor do texto e imagem.
Lista completa fonte
|
Há algumas coisas a notar sobre este código:
- A JXPanel é usado para conter todos os componentes (etiquetas, botões, etc). E é a transparência é definida para 70% opaco, 30% claro. É por isso que o programa de amostra tem um olhar muito silenciado / mole para ele.
- Certifique-se de lançar o seu programa no balanço do EDT e não o fio que está sendo executado através de seu método main ().
- Uma chamada para setLocationRelativeTo do JFrame (null) centra o JFrame na tela do computador.
O código-fonte de download
Para fazer o download dos projetos ideia para exemplo de código fonte deste tutorial, clique aqui .
0 comentários :
Postar um comentário