E aí pessoal!
Seguinte, eu criei uma JFrame simples, com só dois JTextFields e um JButton, q parece um showInputDialog do JOptionPane, só q com dois campos de texto. O q eu preciso fazer e o seguinte, um método chama o jframe e pede pra inserir os dois valores e os guarda num array de string. Só q Quando eu chamo um método do meu jframe e depois chamo um JOptionpane por exemplo, ele mostra o meu JFrame e o JOptionPane em seguida, e eu preciso q ele só mostre o JOptionPane depois q eu inserir os valores no meu frame, assim como num JOptionPane.showInputdialog().
Alguem tem uma ideia?
Esse é o meu frame:
package trabFmc;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
public class JDoubleOptionPane extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel textoCorpo = null;
private JTextField textoField1 = null;
private JTextField textoField2 = null;
private static JButton enviaButton = null;
private static String titulo = null;
private static String corpo = null;
private static String field1 = null;
private static String field2 = null;
//Métodos sets e gets (privados)
private static String getField1() {
return field1;
}
private static void setField1(String field1) {
JDoubleOptionPane.field1 = field1;
}
private static String getField2() {
return field2;
}
private static void setField2(String field2) {
JDoubleOptionPane.field2 = field2;
}
private static String getTitulo() {
return titulo;
}
private static void setTitulo(String titulo) {
JDoubleOptionPane.titulo = titulo;
}
private static String getCorpo() {
return corpo;
}
private static void setCorpo(String corpo) {
JDoubleOptionPane.corpo = corpo;
}
//Fim dos sets e gets
//Método de input
public static String[] showInputDialog(String corpo, String titulo){
JDoubleOptionPane.setCorpo(corpo);
JDoubleOptionPane.setTitulo(titulo);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JDoubleOptionPane doubleOption = new JDoubleOptionPane();
doubleOption.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
doubleOption.setVisible(true);
}
});
String [] valores = {JDoubleOptionPane.getField1(), JDoubleOptionPane.getField2()};
return valores;
}
public JDoubleOptionPane() {
super();
initialize();
}
private void initialize() {
this.setSize(354, 190);
this.setContentPane(getJContentPane());
this.setResizable(false);
if(JDoubleOptionPane.getTitulo().equals(null)){
this.setTitle("Input");
}else{
this.setTitle(JDoubleOptionPane.getTitulo());
}
}
private JPanel getJContentPane() {
if (jContentPane == null) {
textoCorpo = new JLabel();
textoCorpo.setBounds(new Rectangle(15, 15, 316, 20));
textoCorpo.setText(JDoubleOptionPane.getCorpo());
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(textoCorpo, null);
jContentPane.add(getTextoField1(), null);
jContentPane.add(getTextoField2(), null);
jContentPane.add(getEnviaButton(), null);
}
return jContentPane;
}
private JTextField getTextoField1() {
if (textoField1 == null) {
textoField1 = new JTextField();
textoField1.setBounds(new Rectangle(15, 45, 316, 20));
}
return textoField1;
}
private JTextField getTextoField2() {
if (textoField2 == null) {
textoField2 = new JTextField();
textoField2.setBounds(new Rectangle(15, 75, 316, 20));
}
return textoField2;
}
private JButton getEnviaButton() {
if (enviaButton == null) {
enviaButton = new JButton();
enviaButton.setBounds(new Rectangle(121, 104, 105, 40));
enviaButton.setText("OK");
enviaButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JDoubleOptionPane.setField1(textoField1.getText());
JDoubleOptionPane.setField2(textoField2.getText());
}
});
}
return enviaButton;
}
}
Aí, como o método é static, eu chamaria assim:
JDoubleOptionPane.showInputDialog("Digite os dois valores", "Título da janela");
Fico esperando.
Vlw pessoal!!!