André L. S. Desenvolvimento de Softwares, Tecnologia e Games

23mar/102

Configurando acesso à internet via proxy em aplicações Java

Hoje tive um problema no meu trabalho onde um client, que roda via prompt de comando (Prompt do DOS), não conseguia acessar o servidor hospedado na internet, isso porque a empresa onde trabalho utiliza proxy.

Depois de algumas tentativas acabei achando duas soluções para resolver o problema de acesso: a primeira foi passar como parâmetros Java as configurações do proxy.

$ java -Dhttp.proxyHost=serv -Dhttp.proxyPort=porta -Dhttp.proxyUser=usu -Dhttp.proxyPassword=senha ClasseJava

-Dhttp.proxyHost = IP ou nome do servidor proxy
-Dhttp.proxyPort = Porta do proxy
-Dhttp.proxyUser = Usuário
-Dhttp.proxyPassword = Senha

Desta forma a classe ClasseJava terá acesso à internet através do proxy.

A outra forma foi inserir as configurações na própria classe:

public static void main(String[] args){
...
System.getProperties().put("proxySet", "true");
System.getProperties().put("http.proxyHost", "serv");
System.getProperties().put("http.proxyPort", "porta");
System.getProperties().put("http.proxyUser", "usuario");
System.getProperties().put("http.proxyPassword", "senha");
...
}

proxySet = Define se passará ou não por um servidor proxy
http.proxyHost = IP ou nome do servidor proxy
http.proxyPortt = Porta do proxy
http.proxyUse = Usuário
http.proxyPassword = Senha

Usando um destes recursos você poderá configurar sua aplicação para acessar à internet através de um proxy.

Espero ter ajudado. Até +! ;)

16mar/100

Playlist do Amarok pára após tocar uma música

Recentemente enfrentei um problema que vários outros usuários do Amarok 2.1.1 vêm enfrentando: O Amarok só toca uma música do playlist e depois pára.

Para resolver este problema: Feche o Amarok, delete o arquivo  ~/.kde/share/apps/amarok/current.xspf e então reinicie o Amarok.

Pelo menos comigo funcionou e espero que funcione com todos! ;)

Até +.

16mar/102

Criando janelas transparentes e com formas usando Java Swing/AWT

O AWT nos oferece uma gama de possibilidades quando falamos sobre manipulação de janelas. Hoje falarei sobre duas destas possibilidades com a classe AWTUtilities.

Deixando a janela transparente

Para deixar uma Window (JFrame, JDialog e etc) transparente,  você deve usar o método AWTUtilities.setWindowOpacity. Este método recebe como parâmetro a janela que deve ser alterada e o grau de transparência, que varia entre 0 (zero) e 1, sendo 0 (zero) invisível e 1 totalmente visível.

JFrame  window = new JFrame("Minha janela");

//70% de transparência
AWTUtilities.setWindowOpacity(window, .7f);
window.setSize(800,600);
window.setVisible(true);

O resultado será:

Alterando a forma da janela

Para alterar a forma da janela você deve usar o método AWTUtilities.setWindowShape. Este método recebe como parâmetro a janela que deve ser alterada e a forma (java.awt.Shape) que a janela deverá assumir.

A forma mais eficiente de usar este método é através do componentResized(), pois você poderá recalcular o tamanho da janela para não deforma-la ou não perder os componentes de vista.

Aqui deixaremos nossa janela com a forma de um triângulo com 70% de transparência.

final JFrame  window = new JFrame("Minha janela");

try {
	//Adicionando o ComponentListener responsável pelo componentResized
	window.addComponentListener(new ComponentAdapter(){
		@Override
		//implementando o método componentResized
		public void componentResized(ComponentEvent e) {
			int[] x = {0,400,800}; //Pontos X do polígono
			int[] y = {600,0,600}; //Pontos Y do polígono

			//Criaremos um triângulo de 800 x 600
			Shape shape = new Polygon(x, y, 3);

			AWTUtilities.setWindowShape(window, shape);

			//com transparência de 70%
			AWTUtilities.setWindowOpacity(window, 0.7f);
		}
	});
} catch (SecurityException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
} catch (IllegalArgumentException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

window.setUndecorated(true); //removendo barra de título
window.setSize(800,600);
window.setVisible(true);

Repare que invoquei o método setUndecorated( ) passando o valor true, este método é responsável por ocultar a barra de título (aquele com o ícone e os botões de maximizar, minimizar e fechar) que, se estiver visível, o método AWTUtilities.setWindowShape( ) não surtirá efeito.

O resultado:

Espero que tenham gostado e até a próxima!

//Pontos X do polígono