Exibir janela uma unica vez!

12 respostas
kemperacc

Pessoal, estou pesquisando sobre o assunto, mas até agora nao consegui localizar muita coisa.

É o seguinte, eu criei no meu programa um formulario swing, com o nome FormCopyright, este form deve ser exibido uma unica vez para cada usuario do sistema, tipo assim, vou colocar lah no main():

//TENHO QUE ARRUMAR UM JEITO DE DESCOBRIR SE JAH EXIBIU
//OU NAO O COPYRIGHT
boolean jaExibiuCopyrith = false;

if (!jaExibiuCopyright){
    FormCopyright frmCopyright = new FormCopyrith();
    frmCopyritht.setModal(true);
    frmCopyritht.setVisible(true);
}

//Obs - Pode haver algum erro neste codigo
//pq eu digitei aki mesmo no forum.

Existe alguma forma “multiplataforma” de salvar essa informacao e recupera-la?

Por exemplo, quando eu programa em visual basic, tinha as funcoes getSeting() e saveSeting() que gravavam e liam informacoes do registro. Eu to precisando de algo desse tipo, mas tem que ser multiplataforma, pois o sistema sera executado em linux, freebsd and others.

[]s a todos.

12 Respostas

ateubh

você quer gravar algom em banco de dados?
se for usa hibernate

:arrow: www.hibernate.org

kemperacc

Nao, esta “chave” deve ser salva para cada usuario em cada computador, por exemplo, o usuario xpto loga-se no computador ygv e executa o programa pela primeira vez, entao, exibe o copyright. o usuario uhb loga-se na maquina ygv e executa o programa, entao, exibe o copyright novamente. Se o usuario xpto logar-se novamente na maquina e executar novamente o programa, ai jah nao exibe novamente o copyright.

Quando eu digo usuario, é usuário do sistema operacional, não do meu programa.

Eu tentei usar um arquivo .properties, ateh consigo ler e gravar informações nele, mas o problema, eh que se o programa for chamado de outro local (outro diretorio), ele vai criar outro arquivo .properties, eu queria algo idependente de localizacao.

bueno

se você tiver direito de escrita crie um arquivo para armazenar esta informação, ou altere o arquivo de configuração da sua aplicação para isso

kemperacc

Como assim?

Nao existe um “saveSeting” e um “getSeting”, jah pronto, a gente soh passa os parametros e ele salva/le os dados?

[]s

bueno

Sim existe

digamos que você usa um arquivo de properties, algo como um arquivo ini do windows

fala=texto de fala
conversa= texto da conversa

você vai usar :

// carregando o arquivo tipo properties

Properties properties = new Properties();

try {

properties.load(new FileInputStream(arquivo.conf));

} catch (IOException e) {

}

//aqui você recupera um valor
String string = properties.getProperty(“fala”);

//aqui você escreve um valor
properties.setProperty(“conversa”, “nova conversa sobre …”);

//salva alterações

try {

properties.store(new FileOutputStream(arquivo.conf), null);

} catch (IOException e) {

}

flw

kemperacc

eu tentei usar o .properties, mas tem um problema, imagina que eu faça o meu programa criar este arquivo, caso na exista. O arquivo será criado onde o usuário executou o programa.

Aí, vc pode dizer, entao cria ele dentro do package e usa ele lah. Tá, mas eu tenho uma porrada de usuários, não posso criar os arquivos para cada usuário, ou uma chave para cada usuário dentro deste arquivo.

Alias, pra fazer dessa forma, eu teria que capturar o nome do usuário. Bom, sistemas como o windows e o linux, possuem seus métodos de gravar configurações, o windows grava no registro (eca!) e o linux, o padrão é colocar arquivos globais de configuração sob o diretório /etc/ e no caso de configurações pessoais, criar uma pasta oculta (iniciada por um ponto ex: .nomedoprograma) e lah criar os arquivos necessários.

O que eu gostaria, é de automatizar esse tipo de serviço, de gravar e salvar configurações, acho desencessário ficar reimplementando isso tudo.

[]s

bueno

entendi

se o problema for o local do arquivo o método load do Properties é um InputStream, então :

File fl = new File(“caminho/arquivo.conf”);
FileInputStream fis = new FileInputStream(fl);

properties.load(fis)

mas pelo que estou percebendo o usuário que usa o seu sistema não se loga nele, se ele se logar voce pode criar um campo na tabela para armazenar se ele já viu o copyrigth lá

bueno

tem mais uma alternativa que você pode tentar …

use System.getProperties(“user.home”) para obter o diretório local do usuário

recomendo ler a especificação

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html

na método

getProperties

flw

kemperacc

OK, soh complementando,

o correto eh: System.getProperty(“user.home”);

bueno

acho que digitei muito rápido, hehehe :smiley:

valeu

kemperacc

Classe para ler e gravar configuracoes:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class Configuracao {

	private String userHome;

	private File configFile = null;

	private boolean aceitouCopyright = false;

	private boolean mostrouCopyright = false;

	private String servidor = "localhost";
	
	private String userName = "";

	public Configuracao() {
		this.userHome = System.getProperty("user.home");
		File configDir = null;
		// Checa se o diretorio do usuario existe
		configDir = new File(userHome + File.separator + ".sisgp");
		if (!configDir.exists()) {
			System.out.println("Criando diretorio de configuracao: " + configDir.toString());
			configDir.mkdir();
		}

		// Checa se o arquivo de configuracao existe
		configFile = new File(configDir.toString() + File.separator + "config.properties");
		if (!configFile.exists()) {
			System.out.println("Criando arquivo de configuração: " + configFile.toString());
			try {
				configFile.createNewFile();
			} catch (Exception ee) {
				System.out.println("Não foi possível criar o arquivo de configuração, reporte o problema abaixo ao Desenvolvedor do software:");
				ee.printStackTrace();
			}
		}

		
		loadConfigs();
	}
	
	private void loadConfigs(){
		// Carrega o arquivo de properties
		Properties config = new Properties();
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(configFile);
		} catch (FileNotFoundException ee) {
			System.out.println("Warning: arquivo de configuracao nao localizado, utilizando default");
		}

		try {
			config.load(fis);
		} catch (IOException ee) {
			System.out.println("Warning: Não foi possível ler o arquivo de configuraçã, utilizando default");
		}

		if (config.getProperty("mostrouCopyright", "0").equals("0")) {
			mostrouCopyright = false;
		} else {
			mostrouCopyright = true;
		}

		if (config.getProperty("aceitouCopyright", "0").equals("0")) {
			aceitouCopyright = false;
		} else {
			aceitouCopyright = true;
		}
		
		this.servidor=config.getProperty("servidor", "localhost");
		this.userName=config.getProperty("userName", "");
	}

	public boolean aceitouCopyright() {
		return aceitouCopyright;
	}

	public void setAceitouCopyright(boolean aceitouCopyright) {
		this.aceitouCopyright = aceitouCopyright;
		writeConfigs();
	}

	public boolean mostrouCopyright() {
		return mostrouCopyright;
	}

	public void setMostrouCopyright(boolean mostrouCopyright) {
		this.mostrouCopyright = mostrouCopyright;
		writeConfigs();
	}

	public String getServidor() {
		return servidor;
	}

	public void setServidor(String servidor) {
		this.servidor = servidor;
		writeConfigs();
	}

	private void writeConfigs(){
		Properties config = new Properties();
		
		config.setProperty("servidor", this.servidor);
		
		config.setProperty("userName", this.userName);

		if (mostrouCopyright) {
			config.setProperty("mostrouCopyright", "1");
		} else {
			config.setProperty("mostrouCopyright", "0");
		}

		if (aceitouCopyright) {
			config.setProperty("aceitouCopyright", "1");
		} else {
			config.setProperty("aceitouCopyright", "0");
		}

		try {
			config.store(new FileOutputStream(configFile), "");
		}catch (IOException ee){
			System.err.println("Ocorreu um erro ao tentar gravar a configuração, informe ao Desenvolvedor:");
			ee.printStackTrace();
		}
		
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
		writeConfigs();
	}
	
}
bueno

ficou bom parabens !!! :smiley:

espero ter ajudado

Criado 21 de dezembro de 2006
Ultima resposta 22 de dez. de 2006
Respostas 12
Participantes 3