Jump to content
Sign in to follow this  
Jaxz

Java JTable

Recommended Posts

Jaxz

Boas, eu tenho estado a desenvolver um projecto para a universidade e tem sido feita a interface gráfica no NetBeans. Tenho uma JFrame principal que contêm botões que ao clicar neles abrem outras JFrames. O problema é o seguinte eu nessa JFrame principal tenho um botão chamado "Visitantes" que abre uma JFrame chamada "Visitantes". Nessa JFrame "Visitantes" tenho um JTable um botão que adiciona uma linha à JTable, um botão que remove uma linha seleccionada da JTable e um botão chamado Fechar para fechar essa JFrame. O código do botão Fechar tem a acção dispose();

O que eu queria era que quando executasse o programa e quisesse alterar durante a sua execução algum conteúdo da JTable, quando fechasse a JFrame onde está contida a JTable a informação alterada não desaparecesse. Assim quando eu voltasse a clicar no botão "Visitantes" para abrir a JFrame "Visitantes" a informação alterada estaria como a tinha deixado antes, em vez de voltar a ser a informação pré-definida. Isto tudo sempre com o programa a ser executado, pois não quero gravar mesmo depois do programa ter sido terminado. Gostava de saber como posso fazer isto.

imagem:

http://img215.imageshack.us/img215/91/semttulobt.png

Desde já, Obrigado.

Jaxz

Share this post


Link to post
Share on other sites
Baderous

Não deves ter mais do que 1 JFrame na aplicação. Deves ter apenas a JFrame principal e todas as outras janelas deverão ser JDialogs.

Sem gravar isso, não estou a ver como vais recuperar os dados quando fechares a aplicação.

Share this post


Link to post
Share on other sites
Jaxz

Não é terminar o programa, é só fechar a janela onde está a tabela. A  janela principal mantém se aberta e se depois for abrir a JFrame com a tabela os dados que eu la tinha alterado manter-se-iam. Eu não pretendo que mesmo depois de terminar o programa fique tudo gravado, caso termine volta tudo ao estado original. Há alguma diferença nos JDialog que permite fazer isto que queria?

Share this post


Link to post
Share on other sites
Baderous

Há alguma diferença nos JDialog que permite fazer isto que queria?

Uma JFrame, se é que é isso que estás a usar, porque o termo "frame" é algo dúbio, é um componente de topo, é o componente principal de uma aplicação e deve ser único, não devem existir duas JFrames. O componente representa toda a aplicação, tem uma iniciação mais lenta que os outros componentes e regista mais informações no SO que os outros componentes, além de ter comportamento específico por ser o tipo de componente de topo que é. Ter duas é duplicar o esforço que depois não é rentabilizado.

Usas uma JFrame para a janela principal da aplicação e JDialog para qualquer outra janela que seja para abrir a partir da aplicação principal, dos seus menus, botões, atalhos ou outra interacção que exista na aplicação. As JDialogs permitem fazer janelas quase como as JFrames, são similares em quase tudo o que oferecem ao programador mas são mais simples, mais leves, e mais adequadas ao comportamento que estás a tentar fazer.

Claro que tudo com JFrame funciona, não há razão para não funcionar, mas não é adequado.

Share this post


Link to post
Share on other sites
Jaxz

Obrigado pela explicação , vou tratar imediatamente de remodelar tudo para JDialogs. No entanto será que podias tirar a minha outra dúvida, de como fazer com que os dados alterados não voltem ao estado original, enquanto o programa está a ser executado?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.