Ola pessoal veja so minha duvida tenho uma JFrame e nele tem um 3 jbutton que funciona para o usuario escolher se as telas irao abrir centralizado ou se irao abrir para a esquerda ou para a direita cada botao com sua funcao!!
E quando clico no botao ex: ESQUERDA(que no caso funciona para as telas abrirem para a esquerda), ele fica armazenado em uma variavel estatica left fazendo que todas as janelas apartir daquele momento abram para a esquerda, o problema é o seguinte quando ele fecho o sistema ele perde a configuracao a continua abrindo o default, como deixo armazenado na hd a alteração feita no jbutton? se fosse em web seria armazenar um cookie!! vlw pela atenção!
Variavel static armazenar
2 Respostas
samuelM
no meu caso que utilizo Banco de Dados SQL eu iria guardar a informação em alguma tabela, e sempre que eu iniciar o sistema, eu iria pegar a ultima configuração e executar.
Para no caso não precisar trabalhar com SQL você pode aprender um pouco sobre persistência de dados, e guardar estas configurações em algum arquivo no HD, e sempre que sua aplicação executar, você vai la e busca as ultimas alterações realizadas.
Se estiver errado, por favor me corrijam.
Espero ter ajudado.
Cara, veja o java.util.Properties.
Antes de fechar a aplicação, grave os dados em um arquivo de configuração. Aí, quando o usuário abrir a sua aplicação, carregue os dados deste arquivo de configuração.
Esse é um código simples que tenho aqui:
public class MainController {
public static void main(String[] args) {
/* coloco um windowlistener no meu JFrame principal.
WindowListener x = new WindowListener() {
.
.
.
@Override
public void windowClosing(WindowEvent e) {
try {
MainController.saveConfiguration();
} catch(IOException ex) {
ex.printStackTrace();
}
System.exit(0);
}
.
.
.
};
MainView.addWindowListener(x);
Properties p = MainController.getConfigurationProperties();
MainView.setOriginalFilename(p.getProperty("filename","autosave.csg"));
MainView.setFilePath(p.getProperty("path","C:\\Program Files (x86)\\Steam\\steamapps\\common\\age of wonders\\Save"));
MainView.setRenamePrefix(p.getProperty(P_PREFIX,"on%.csg"));
.
.
.
O código do MainView.addWindowListener(x) basicamente faz isso
public static void addWindowListener(WindowListener x) {
mainFrame.addWindowListener(x);
mainFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
Onde o mainFrame é um JFrame. Repare que estou mandando a janela não fechar automaticamente ao se clicar no “X” da janela.
Agora o código que faz a “mágica” é um código no main que le as propriedades do arquivo de configuração.
private static Properties configurationProperties;
private static Properties getConfigurationProperties() {
if(configurationProperties ==null) {
configurationProperties = new Properties();
try {
configurationProperties.load(getConfigurationReader());
} catch(IOException e) {
e.printStackTrace();
}
}
return configurationProperties;
}
E para gravar as propriedades.
protected static void saveConfiguration() throws IOException {
System.out.println("saving configuration file");
Properties p = getConfigurationProperties();
p.setProperty(P_FILENAME, MainView.getFilename());
p.setProperty(P_PATH,MainView.getLocalFolder());
p.setProperty(P_PREFIX, MainView.getRenamePrefix());
writeProperties(p);
}
private static void writeProperties(Properties p) throws IOException {
Writer w = MainController.getConfigurationWriter();
p.store(w,"");
w.close();
}
Nota, esse código do jeito que está aqui não vai funcionar, fiz só um cut e paste de alguns pedaços, pra você ter uma idéia.