Como faço para definir de um aplicativo de ícone globalmente em Swing?

StackOverflow https://stackoverflow.com/questions/103179

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu sei que posso especificar um para cada formulário, ou para a forma de raiz e, em seguida, ele vai em cascata através de todas as formas crianças, mas eu gostaria de ter uma maneira de substituir o padrão Java Coffee Cup para todos formas, mesmo aqueles que eu poderia esquecer.

Todas as sugestões?

Foi útil?

Solução

Você pode fazer a forma de raiz (por que eu suponho que você JFrame média) ser a sua própria subclasse de JFrame, e colocar funcionalidade padrão em seu construtor, tais como:

this.setIconImage(STANDARD_ICON);

Você pode agrupar outras coisas padrão aqui também, como memorizar métricas janela do quadro como uma preferência do usuário, gerenciar painéis respingo, etc.

Os novos quadros gerados por este também seria instâncias desta subclasse JFrame. A única coisa que você tem que lembrar é instanciar a subclasse, em vez de JFrame. Eu não acho que há qualquer substituto para lembrar-se de fazer isso, mas pelo menos agora é uma questão de lembrar uma subclasse em vez de uma chamada setIconImage (entre possivelmente outras características).

Outras dicas

Há uma outra maneira, mas é mais de um "hack", então uma correção verdadeira ....

Se você estiver distribuindo o JRE com o seu aplicativo, você pode substituir o ícone do recurso xícara de café no java exe / dll / rt.jar onde quer que seja com seu próprio ícone. Pode não ser muito legal, mas é uma possibilidade ...

Além disso, se você tiver um "principal" janela, e definir o seu ícone corretamente, contanto que você usar essa janela principal como o "pai" para as classes de diálogo, eles herdarão o ícone. Quaisquer novos Frames precisa ter o conjunto ícone sobre eles, no entanto.

como disse Paul / Andreas, subclasse JFrame vai ser sua melhor aposta.

Estender a classe JDialog (por exemplo, nome que MyDialog) e definir o ícone no construtor. Em seguida, todos os diálogos devem estender sua implementação (MyDialog).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top