Duvidas com JFrame

3 respostas
S

Boa noite,

Desde ja agradeco qualquer colaboracao.
Estou com a seguiente duvida:

Tenho um botao no frame1 que quando clicado abre um novo frame (2).

.

.

.

.

AbstractAction abstractaction10 = new AbstractAction(Transmite, new ImageIcon(getClass().getResource(image/ftp.gif))) {

public void actionPerformed(ActionEvent actionevent)

{

fechaPed();
}
    };
.

.

.

.

public void fechaPed()

{

File diretorio = new File(dir_tmp);

File filenvia[] = diretorio.listFiles();

if (filenvia.length == 0)

{

erro.showMessageDialog(null ,Nenhuma imagem foi selecionada.,Erro,erro.ERROR_MESSAGE );

return;

}
// aqui e chamado o frame2
    ListaPed listaped = new ListaPed(true);

/* **************************************************
preciso saber qual botao foi clicado no frame2 ( ok ou cancelar )
para saber se sera executado o MyFTP
*/ **************************************************

MyFTP myftp = new MyFTP();
    Thread threadftp = new Thread(myftp);
    threadftp.start();   
}

A listagem do frame2 segue abaixo.
Os dois estao em arquivos separados

public class ListaPed extends JFrame

{

private boolean DEBUG = false;
public void ListaPed(boolean flag1) 
{
    flag = flag1;
    Container telap = getContentPane();
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((dimension.width - 600) / 2, (dimension.height - 400) / 2);          
    telap.setBackground(javax.swing.UIManager.getDefaults().getColor("RadioButton.select"));
    telap.setLayout(null);
    Properties properties = new Properties();
    String usuario = properties.getProperty("EMAIL");
    String usuario1[] = usuario.split("@");
    String user = usuario1[0];
    String s = System.getProperty("user.home");
    String filesep = System.getProperty("file.separator");
    String dir_user = s+filesep+"."+user;
    File fdir_user = new File(dir_user);
    if(!fdir_user.exists())
    {
        pedido = "Não definida";
    }else{
        String filename = dir_user + filesep + ".os.cfg";
        File fos = new File(filename);
        if(!fos.exists())
        {
            pedido = "Não definida";
        }else{
            ordemserv = new OrdemServ();
            pedido = ordemserv.getProperty("OS")+"_"+ordemserv.getProperty("IDCLI")+"_"+ordemserv.getProperty("OSCLI");
        }
    }
    String pedidocfg = dir_user + filesep + ".pedido.cfg";
    String[] columnNames = {"Seq.","Nome",
                                    "Quantidade",
                                    "Tamanho",
                                    "Cor",
                                    "Papel",
                                    "Borda",
                                    "Margem"};
    Object[][] data = new Object[170][8];    
    try{
        String line_str;
        java.io.FileInputStream isTwo = new java.io.FileInputStream(pedidocfg);
        java.io.DataInputStream dsTwo = new java.io.DataInputStream(isTwo); 
        int i = 1;
        while((line_str = dsTwo.readLine()) != null)
        {
            String[] divisor = line_str.split("=");
            String nome = divisor[0].toString().trim();
            String servico = divisor[1].toString().trim();
            String[] nome_servico = (nome.toString()+servico.toString()).split("-");
            data[i][0] = i;
            data[i][1] = nome_servico[0];
            data[i][2] = nome_servico[1];
            data[i][3] = nome_servico[2];
            data[i][4] = nome_servico[3];
            data[i][5] = nome_servico[4];
            data[i][6] = nome_servico[5];
            data[i][7] = nome_servico[6];
            i++;
            System.out.println(nome_servico[0]+pedido);        
         }
        dsTwo.close( );
    }catch (java.io.IOException e) {
       // javax.swing.JOptionPane.showMessageDialog( null, "File error: " + e.toString() );
    }                                 
    
    final JTable table = new JTable(data, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(750, 300));
    if (DEBUG) {
        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                printDebugData(table);
            }
        });
    }
    JLabel jLabel1 = new JLabel("Numero OS: ");
    jLabel1.setBounds(5,5,80,20);                
    JLabel jLabel2 = new JLabel(pedido);
    jLabel2.setBounds(95, 5, 120, 20 );
    jLabel2.setBackground(Color.white);
    if(flag)
    {
        JLabel jLabel3 = new JLabel("Numero envelope: ");
        jLabel3.setBounds(235,5,130,20);                
        jTextField = new JTextField(10);
        jTextField.setBounds(365, 5, 80, 20 );
        jTextField.setBackground(Color.white);
        envelope = jTextField.getText();
        telap.add(jLabel3);
        telap.add(jTextField);
        
        jButton1 = new JButton("Ok");
        jButton1.setBounds(240,375,55,20); 
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });
        
        jButton2 = new JButton("Cancelar");
        jButton2.setBounds(305,375,100,20);        
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton2MouseClicked(evt);
            }
        });                 
        telap.add(jButton1);
        telap.add(jButton2);                
    }else{
        jButton2 = new JButton("Fechar");
        jButton2.setBounds(270,375,80,20);        
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton2MouseClicked(evt);
            }
        });
        telap.add(jButton2);               
    }

    scrollPane = new JScrollPane(table);
    scrollPane.setViewportView(table);
    scrollPane.setBounds(3,30,600,340);
    telap.add(jLabel1);
    telap.add(jLabel2);
    telap.add(scrollPane);
    setSize(610,430);
    setTitle("Resumo do pedido");
    setVisible(true);
    telap.setFocusable(true);
}

public void printDebugData(JTable table) 
{
    int numRows = table.getRowCount();
    int numCols = table.getColumnCount();
    javax.swing.table.TableModel model = table.getModel();

    System.out.println("Value of data: ");
    for (int i=0; i < numRows; i++) {
        System.out.print("    row " + i + ":");
        for (int j=0; j < numCols; j++) {
            System.out.print("  " + model.getValueAt(i, j));
        }
        System.out.println();
    }
    System.out.println("--------------------------");
}

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) 
{
    if(flag)
    {
        envelope = jTextField.getText();
        System.out.println(envelope);
        ordemserv.setProperty("ENVELOPE", envelope);        
    }
     dispose();
 }

private void jButton2MouseClicked(java.awt.event.MouseEvent evt) 
{
    dispose();
}

JLabel jLabel1;
JLabel jLabel2;
JLabel jLabel3;
JTextField jTextField;    
JScrollPane scrollPane;
JButton jButton1;
JButton jButton2;
OrdemServ ordemserv;    
public String pedido;
public String envelope;
boolean flag;

}

3 Respostas

J

O que você pode fazer é colocar uma variável public como um int por exemplo na segunda classe, que inicializa com 0 (nenhum botão foi clicado), 1 se ok e 2 cancelar. E no frame 1 quando vc abrir o frame 2 vc faiz o seguinte:

Frame2 f2 = new Frame2();

while (f2.getBotaoSelecionado() == 0) {
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
    }
}

// Aqui você sabe qual o botão selecionado
if (f2.getBotaoSelecionado == 1) {
    // OK
} else {
    // Cancelar
}

Espero ter ajudado…
Flw…

S

Bom dia,

Experimentei sua ideia, mas ocorreu que quando o frame 2 e chamado, aparece somente a janela com titulo sem o conteudo (jtable e botoes).
Continuei pesquisando e acabei usando Jdialog no segundo frame com a opcao modal true. O meu problema agora e que ao clicar fora da area do frame 2, ou seja no frame1, ele se esconde no segundo plano e como nao consigo minimizar o frame1 fica parecendo que o programa travou. Como faco para manter o frame2 sempre em primeiro plano?

Sergio

J

Você setou o owner do dialog pro frame1??? Acho que c vc fizer isso ele não desaparece…

Flw…

Criado 5 de janeiro de 2005
Ultima resposta 7 de jan. de 2005
Respostas 3
Participantes 2