Bom, eu tenho no programa um JFrame principal que dentro dele há um botao certo ? E esse botao, qdo clicado, abre um outro JFrame, que contém um JTextArea que permite a geração de relatório ok?
Gostaria de fazer uma coisa: antes de mais nada vamos chamar o JFrame principal de JFrame 1 e o do JTextArea de JFrame 2 ok ? bom, se o usuário fechar o JFrame 2, gostaria que o texto que ele escreveu nao perdesse, para que qdo ele clicar de novo no botao, o texto continue la no textarea. alguem tem alguma ideia de como fazer isso ?
grato,
packageferramentas;importjava.awt.BorderLayout;importjava.awt.Dimension;importjava.awt.FlowLayout;importjava.awt.Font;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjavax.swing.BorderFactory;importjavax.swing.ButtonGroup;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JRadioButton;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.border.TitledBorder;publicclassRelatorio{JPanelpainelRel,p2,painelCentral,painelSuperior;JRadioButtonplain,bold,italic,boldItalic;ButtonGroupradioGroup;FontplainFont,boldFont,italicFont,biFont;JTextAreatexto;publicRelatorio(){JFrameframe=newJFrame("Relatório");painelCentral=newJPanel(newBorderLayout());painelSuperior=newJPanel(newFlowLayout());p2=newJPanel();painelRel=newJPanel();texto=newJTextArea(45,40);texto.setLineWrap(true);texto.setWrapStyleWord(true);JScrollPanebarra=newJScrollPane(texto);//Adiciona Scroll a TextAreabarra.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);p2.add(barra);//Adiciona a Scroll ao painelpainelRel.add(p2);painelCentral.add(painelRel,BorderLayout.CENTER);painelCentral.add(painelSuperior,BorderLayout.NORTH);TitledBordertituloBot;tituloBot=BorderFactory.createTitledBorder("Fontes");JPanelpainelBotao=newJPanel();painelBotao.setPreferredSize(newDimension(300,80));painelBotao.setBorder(tituloBot);plain=newJRadioButton("Plain",true);painelBotao.add(plain);bold=newJRadioButton("Bold",false);painelBotao.add(bold);italic=newJRadioButton("Italic",false);painelBotao.add(italic);boldItalic=newJRadioButton("Bold/Italic",false);painelBotao.add(boldItalic);RadioButtonActionact=newRadioButtonAction();plain.addItemListener(act);bold.addItemListener(act);italic.addItemListener(act);boldItalic.addItemListener(act);radioGroup=newButtonGroup();radioGroup.add(plain);radioGroup.add(bold);radioGroup.add(italic);radioGroup.add(boldItalic);plainFont=newFont("Serif",Font.PLAIN,14);boldFont=newFont("Serif",Font.BOLD,14);italicFont=newFont("Serif",Font.ITALIC,14);biFont=newFont("Serif",Font.BOLD+Font.ITALIC,14);texto.setFont(plainFont);painelSuperior.add(painelBotao);frame.add(painelCentral);frame.setVisible(true);frame.setSize(500,850);}privateclassRadioButtonActionimplementsItemListener{publicvoiditemStateChanged(ItemEvente){if(e.getSource()==plain)texto.setFont(plainFont);elseif(e.getSource()==bold)texto.setFont(boldFont);elseif(e.getSource()==italic)texto.setFont(italicFont);elseif(e.getSource()==boldItalic)texto.setFont(biFont);}}}
ViniGodoy
Feche o Frame2 com setVisible(false). Isso só o tornará invisível.
Depois, no Frame1, dê new uma única vez no Frame2, guardando a variável dele numa propriedade.
Nas demais vezes, basta dar setVisible(true) no frame.
JamesBond
cara, nao entendi o que vc disse sobre isso …
tipo, fiz a chamada do JFrame 2 assim:
relatorio=newJButton("Relatorio");relatorio.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){r=newRelatorio();//ai chama a classe Relatorio, e obviamente ira abrir o JFrame 2}});
mas nao entendi o que vc quis dizer com aquilo …
poderia me especificar ? mais detalhes por favor
t+
mulatox
Ele disse q vc poderiar fazer pra quando o usuario fechar o frame, inves de fechar ele faria o frame ficar invisivel tendo assim os dados ainda nele
JamesBond
mas entao … foi o que eu fiz … mas mesmo assim nao deu certo …
veja (isso na classe do JFrame 2):