Ajuda com metodos no Netbeans

Boa Tarde Galera!
Eu sou iniciante em java e queria tirar umas duvidas. Eu estava tentando fazer um codigo simples no Netbeans que abrisse um arquivo txt.
Só que eu não consigo pegar usar os metodos corretamente.
Eu não sei aonde eu estou errando pq eu realmente sou novato.
Bom vou colocar tudo q eu tenho pra ver se alguem me da uma luz.

Vamo lá:
Eu tenho a classe Metodos:

import java.io.*;

public class Metodos extends Tela {
    String line_str;
    public  java.util.Vector dados = new java.util.Vector();        
    
    public void Abrir(){
        try{
            javax.swing.JFileChooser arquivo = new javax.swing.JFileChooser();
            if(arquivo.showOpenDialog(arquivo) == javax.swing.JFileChooser.APPROVE_OPTION){
                File file = arquivo.getSelectedFile();

                String textoEntrada = "";
                
                java.io.FileInputStream isTwo = new java.io.FileInputStream(  "" +file.getPath() );
                java.io.DataInputStream dsTwo = new java.io.DataInputStream(isTwo);

                dados.removeAllElements();
                
                while((line_str = dsTwo.readLine()) != null){
                    dados.add( line_str + " " );
                    textoEntrada +=  line_str + "\n";
                }
                
                JTextArea1.setText(  textoEntrada  );

                dsTwo.close( );
            }
        }catch (java.io.IOException e) {
            javax.swing.JOptionPane.showMessageDialog( null, "File error: " + e.toString() );
        }
    }
         
        
        
        void calcula(){
        String auxString = "", capturaLetra = "", resultado = "";
        int tamanhoString = 0;
        int tipoM = 0;
        int variacaoPixel = 0;

        for(int j = 0; j < dados.size(); j++){
           
            auxString = dados.get(j).toString();
            tamanhoString = auxString.length();

            for(int i = 0; i < tamanhoString; i++){
                capturaLetra = auxString.substring( i , i+1 );

                if(!capturaLetra.equals("") )
                    resultado += capturaLetra;

            }
            resultado +="\n";
        }
        
        
}

o Jframe chamado Tela que eu crio apenas arrastando:(Não sei se ele é tratado como classe, pois nos pacotes ele e um arquivo normal como as classes)
Eu modifiquei ele um pouco.

import java.lang.*;
/**
 *
 * @author  Luiz Felipe
 */
public class Tela extends javax.swing.JFrame {

    /** Creates new form Tela */
    private static Tela t;
    
    private Tela(){
    }
    
    public static Tela getInstance() {
        if(t == null )
        {
            t = new Tela(); //note que aqui chamamos um construtor privado, mas como e dentro da mesma classe isso nao e problema
        }
    return t;
}


    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        JTextArea1 = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        JTextArea1.setColumns(20);
        JTextArea1.setRows(5);
        jScrollPane1.setViewportView(JTextArea1);

        jButton1.setText("Abrir");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(92, 92, 92)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(142, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(255, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(90, 90, 90))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(37, 37, 37)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 114, Short.MAX_VALUE)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(30, 30, 30))
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void showGUI()
    {
        new Thread( new Runnable()
        {
            public void run()
            {
                getInstance().setVisible(true);
            }
   });
}


    // Variables declaration - do not modify
    private javax.swing.JTextArea JTextArea1;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration

}

E o main que chama a Tela(ou deveria):

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Tela t = new Tela();
        t.show();
    }
}

Bom, é isso.Deve ter muita coisa errada ai nesse codigo. Eu nem joguei o codigo que chama o metodo no botão pq ja começou a dar errado, ai resolvi melhor tentar esolver um erro de cada vez.
A minha maior duvida é como eu faço pra usar nas telas que eu crio apenas arrastando os botões, os metodos de outras classes.Pq o netbeans trata as instancias dos botoes como privada.
Se eu jogar o codigo direto no botão, roda na boa, mas se o codigo ficar em outra classe eu não consigo. E se o metodo for VOID, pior ainda, nem sei como chamar.
Eu sei que é muita duvida, eu to tentando descobrir aki, mas se alguem puder me dar o caminho das pedras eu agradeço muito mesmo.

Abraços

brother…qual o erro exatamente?

Quando vc tenta executar esse código o que acontece?

t+

[quote=Diana]brother…qual o erro exatamente?

Quando vc tenta executar esse código o que acontece?

t+[/quote]

Eu tento chamar o Jframe tela pela classe Main que so serve pra chamar a tela msm, so que qnd eu compilo da um erro dizendo que Tela é privada e não pode ser chamada.

sim…

Tela tem um construtor privado…logo não pode ser chamado diretamente…

# public class Tela extends javax.swing.JFrame {  
#   
#     /** Creates new form Tela */  
#     private static Tela t;  
#       
#     private Tela(){  
#     }  
#       
#     public static Tela getInstance() {  
#         if(t == null )  
#         {  
#             t = new Tela(); //note que aqui chamamos um construtor privado, mas como e dentro da mesma classe isso nao e problema  
#         }  
#     return t;  
# } 

ao invés de: Tela t = new Tela();
você deve executar:
Tela t = Tela.getInstance();

t+

[quote=Diana]sim…

Tela tem um construtor privado…logo não pode ser chamado diretamente…

# public class Tela extends javax.swing.JFrame {  
#   
#     /** Creates new form Tela */  
#     private static Tela t;  
#       
#     private Tela(){  
#     }  
#       
#     public static Tela getInstance() {  
#         if(t == null )  
#         {  
#             t = new Tela(); //note que aqui chamamos um construtor privado, mas como e dentro da mesma classe isso nao e problema  
#         }  
#     return t;  
# } 

ao invés de: Tela t = new Tela();
você deve executar:
Tela t = Tela.getInstance();

t+
[/quote]

vou dar uma olhada e ver no que da. Brigadão!