Orientando os Objetos e chamando recursos de outra classe!

Boa tarde a todos, sou iniciante em java , e com muita vontade em aprender.

Estou tentando criar um programinha simples que faça a seguinte Execução:

Abaixo já tem o Layout do Sistema para um melhor entendimento:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

/*

  • OrdenadorVetores.java
  • Created on 31/03/2011, 09:31:12
    */

package vetores;

/**
*

  • @author Crazy
    */
    public class OrdenadorVetores extends javax.swing.JFrame {

    QuickSort dados = new QuickSort();
    /** Creates new form OrdenadorVetores */
    public OrdenadorVetores() {
    initComponents();
    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      @SuppressWarnings(“unchecked”)
      //
      private void initComponents() {

      jLabel1 = new javax.swing.JLabel();
      jLabel2 = new javax.swing.JLabel();
      Vetor = new javax.swing.JTextField();
      jLabel3 = new javax.swing.JLabel();
      jLabel4 = new javax.swing.JLabel();
      Resultado = new javax.swing.JLabel();
      jButton1 = new javax.swing.JButton();
      jLabel5 = new javax.swing.JLabel();
      QuickSorte = new javax.swing.JButton();
      jLabel6 = new javax.swing.JLabel();
      ResultadoOrdenado = new javax.swing.JLabel();
      jLabel7 = new javax.swing.JLabel();
      jTextField1 = new javax.swing.JTextField();
      jLabel8 = new javax.swing.JLabel();
      jTextField2 = new javax.swing.JTextField();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      jLabel1.setText(“Ordenador de Vetores:”);

      jLabel2.setText(“Numero para ordenar a sua lista (Limite 10 valores):”);

      jLabel3.setText(“Obs: para separar os valores use espaço ex: 10 20”);

      jLabel4.setText(“Valores sem ordenação:”);

      Resultado.setFont(new java.awt.Font(“Tahoma”, 1, 11));
      Resultado.setForeground(new java.awt.Color(255, 0, 0));
      Resultado.setText(“sem valores”);

      jButton1.setText(“MergeSort”);

      jLabel5.setText(“Ordenar utilizando os Métodos:”);

      QuickSorte.setText(“QuickSort”);
      QuickSorte.setMaximumSize(new java.awt.Dimension(83, 23));
      QuickSorte.setMinimumSize(new java.awt.Dimension(83, 23));
      QuickSorte.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      QuickSorteActionPerformed(evt);
      }
      });

      jLabel6.setText(“Valores ordenados :”);

      ResultadoOrdenado.setFont(new java.awt.Font(“Tahoma”, 1, 11));
      ResultadoOrdenado.setForeground(new java.awt.Color(255, 0, 0));
      ResultadoOrdenado.setText(“sem valores”);

      jLabel7.setText(“Valor Inicial”);

      jTextField1.setText(“0”);

      jLabel8.setText(“Valor Final:”);

      jTextField2.setText(“10”);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(119, 119, 119)
      .addComponent(jLabel1))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(Vetor, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jLabel2))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jLabel3))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(27, 27, 27)
      .addComponent(QuickSorte, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addComponent(jLabel5)
      .addComponent(jLabel6)
      .addComponent(ResultadoOrdenado)
      .addComponent(Resultado)))
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
      .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
      .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel7, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.LEADING))
      .addGap(18, 18, 18)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
      .addComponent(jTextField2)
      .addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
      .addContainerGap(125, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jLabel1)
      .addGap(25, 25, 25)
      .addComponent(jLabel2)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(Vetor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jLabel7)
      .addComponent(jLabel8))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(18, 18, 18)
      .addComponent(jLabel4)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(Resultado)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(jLabel5)
      .addGap(8, 8, 8)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jButton1)
      .addComponent(QuickSorte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
      .addComponent(jLabel6)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(ResultadoOrdenado)
      .addContainerGap(31, Short.MAX_VALUE))
      );

      pack();
      }//

    private void QuickSorteActionPerformed(java.awt.event.ActionEvent evt) {
    dados.v = Integer.parseInt(Vetor.getText());

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new OrdenadorVetores().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton QuickSorte;
    private javax.swing.JLabel Resultado;
    private javax.swing.JLabel ResultadoOrdenado;
    private javax.swing.JTextField Vetor;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration

}
[/code]

Nesse Layout acima minha ideia seria a pessoa colocaria 10 valores ( que entraria em um vetor… )
Nas opcoes Valor INicial e Final seria o contador dos Metodos que criei ( onde o 0 seria inicio e o 10 o fim do vetor )
No Lugar de Valores sem ordenação iria surgir os valores que a pessoa digito no inicio.
Ao Clicar em um dos botoes como exemplo: MargeSort ou QuickSorte ele puxaria o metodo executaria e mostraria abaixo o valores Ordenados ( utilizando um desses metodos ).
Abaixo já fiz o Metodo quickSort.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package vetores;

import java.util.Scanner;

/**
*

  • @author Crazy
    */
    public class QuickSort {

    // public static int v[]={1,13,5,8,2,3,4,10,9,12,11};
    public static int []v=new int[10];
    public static Scanner entrada=new Scanner(System.in);
    public static int i;
    static QuickSort obj= new QuickSort();

    /*
    public static void main(String[] args)
    {

    System.out.println(“Digite os valores do vetor”);
    for(i=0;i<v.length;i++)
    {
    v[i]=entrada.nextInt();
    }

    System.out.println(“Dados sem ordenação”); //msg
    for (int ni:v) //for aprimorado para mostrar valores que estao no Vetor Inicial
    {
    System.out.print(ni+ " ");// msg
    }

     obj.quickSort(v, 0, v.length-1);
    
     System.out.println("\nDados Ordenados pelo QuickSort"); //ordenado
     for (int ni=0;ni < v.length;ni++) // mensagem para mostrar como que ficou a ordenaçao
     {
         System.out.print(v[ni]+ " ");
    
     }
    System.out.println();
    

    }*/

/*
public static void main(String[] args)
{

    QuickSort qs = new QuickSort(); //inicio um Objeto da classe mesmo
    System.out.println("Dados sem ordenação"); //msg
    for (int ni:v) //for aprimorado para mostrar valores que estao no Vetor Inicial
    {
        System.out.print(ni+ "  ");// msg
    }
    qs.quickSort(v, 0, 10); //vou adicionar no metodo da nossa classe Primeiro o VETOR, Inicio, e o tamanho final
    System.out.println("\nDados Ordenados pelo QuickSort"); //ordenado
    for (int ni=0;ni < v.length;ni++) // mensagem para mostrar como que ficou a ordenaçao
    {
        System.out.print(v[ni]+ " ");
        
    }
   System.out.println();
}

*/

public void setVetor(int[] vetor)
{

        obj.quickSort(vetor, 0,10);

}

public void quickSort (int[] c, int a, int j) // vai receber os valores adicionados la em cima
{
    int i=a, b=j,h; //variavel a = o valor 0 de la em cima, b=fim(tamanho vetor), h auxiliar
    int x=c[a]; //x vai receber o vetor que definimos la em cima

    do
    {

        while (c[i]<x)//a posicao do vetor for menor que a primeira posição do vetor
            i++; //i vai acumular que no caso ira para segunda casa no vetor
        while (c[b]>x) // enqnt a psicao do vetor que ta em B(final) for maior que o valor da inicial
            b--;//ele vai reduzir para voltar.
        if (i<=b) //se i < b exemplo:  1 < 3
        {
            h=c[i];
            c[i]=c[b];
            c[b]=h;
            i++;
            b--;
        }
    }while (i<=b);

    if (a<b)
        quickSort(c,a,b);
    if (i<=j)
        quickSort(c,i,j);
}

}
[/code]

A Minha duvida é a seguinte como que vou fazer para realizar esse interligamento ?
Receber os valores no vetor , apos isso mostra os valores sem ordem , depois ao clicar o botao organizar os valores utilizando algum dos metodos.
Agradeço a ajuda :slight_smile:

  • poste interfaces gráficas geradas com print, não código, por favor
  • atributos objetos da própria classe geram um “loop infinito” na RAM. Mude as referências pra algo como:

public void setVetor(int[] vetor){ this.quickSort(vetor, 0, 10); // this já está falando do próprio objeto da classe QuickSort }

  • no listener da classe gráfica (do botão desejado, claro), instancie um novo objeto da classe QuickSort e use seus métodos públicos
  • se entendi bem, você quer algo do método quickSort() (o vetor ordenado), então deixe ele com um retorno ou faça um método get para um atributo e modifique o atributo através desse método quickSort()

Desculpe, abaixo coloquei a Imagem:

Não entendi muito bem como fazer , poderia da uma pequena Prévia de como iria fazer isso?

Agradeço já pela ajuda…

listener do botão (evento de clicar)

QuickSort qs = new QuickSort(); // sua classe QuickSort precisa de um construtor válido int[] vet = new int [10]; // ou qualquer tipo que você quiser String s = seutextfield.getText(); // faz um for ai pra converter a String num vetor de inteiros, lembre-se do try-catch caso a entrada seja inválida qs.setVetor(vet); // monta alguma coisa pra mostrar esse vetor, caixa de diálogo, sei lá, com loop também

o problema agora é sua classe QuickSort, que não tem construtor, tem um método que dá auto-call sem sentido, guarda parâmetros em outras variáveis, converte parâmetros para tipos iguais, e método void que não mexe com atributos

devia tentar entender melhor o que você quer fazer antes de simplesmente jogar linhas de código no compilador sem saber o que elas fazem

rsrs
Como falei to iniciando e to na luta pra aprender.
To dando a cara ai pra ve se consigo realizar algo valeu pelas dicas vou ve o que consigo fazer.


Estou com uma duvida no caso de como eu vo recuperar os valores digitado na primeira Linha, e armazena elas nos vetores para realizar os metodos

Mephy fiz dessa maneira…

[code] BubbleSort bs = new BubbleSort();
String valor = Vetor.getText();
int[] valorInt = new int[valor.length()];

    for (int i = 0; i < valorInt.length; i++) {  
        valorInt[i] = Integer.parseInt(valor.substring(i, i+1));  
        //System.out.println(valorInt[i]);  
    }  
    bs.Bolha(valorInt);
    Resultado.setText(String.valueOf(valor));
    ResultadoOrdenado.setText(String.valueOf(bs.BolhaAprimorado(valorInt)));[/code]

Só que nessa ultima linha está dando erro, criei um novo metodo para realizar uma ordenação.
Mas meu erro está na hora que deveria mostrar a Mensagem dos valores Ordenados.
;s

Esse abaixo:

[code] public static void BolhaAprimorado (int v[])
{
for (int i = v.length; i>=0; i–) //controlar o vetor pra ve qnts vezes passara
{
boolean estaOrdenado = true; //valor para ver se o vetor ja esta ordenado
//repeticao que vai organizar o vetor
for (int j = 1; j < i; j++)
{
//Se o valor atual for maior que o proximo troca as posicoes os valores.
if (v[j - 1] > v[j])
{
int aux = v[j];
v[j] = v[j - 1];
v[j - 1] = aux;
/* Identifica que entrando aqui o Valor[x]nao esta no lugar certo e volta
a Repetir*/
estaOrdenado = false;
}

          }
         /* Se o vetor acima nao entrar nenhuma vez no bloco IF entende-se
          que os valoes estao ordenado e com isso da um BREAK e para a execução*/
         if(estaOrdenado)
             break;
     }

}[/code]

cara, sugiro tentar aprender a usar a ferramenta debugger (pelo código que você postou do layout auto-generated, suponho que seja o NetBeans, que já possui essa ferramenta)
ele mostra linha a linha o que está acontecendo com cada variável, o que facilita o entendimento do que o código está fazendo