Dúvida variáveis JRuby

5 respostas
RChaves

Estou com uma dúvida no jruby, não tenho certeza, mas essa me pareceu a área mais certa a se postar, então lá vai.

Eu criei uma classe no java mais ou menos assim:
package fronteira;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TelaPrincipal extends JFrame {
    JButton btt1 = new JButton();
    public TelaPrincipal(){
        //
    }
}
depois mandei construir e o arquivo .jar pus no projeto JRuby, lá, eu pus o main.rb mais ou menos assim:
require 'java'
require 'Telas/TelasJRuby.jar'
include_class 'fronteira.TelaPrincipal'

class TelaPrincipal
  alias tela_principal_initialize initialize
  def initialize
    tela_principal_initialize
    puts(@btt1) # => nil
  end
end

@tela = TelaPrincipal.new
@tela.set_visible(true)

ali eu estou montando a tela que foi construída em java, e modificando o método construtor dela, mas a minha dúvida, é como que a variável btt1 que eu pus lá na tela será passada pro ruby, @btt1 naum eh, @@btt1 naum eh, $btt1, btt1, nada.

5 Respostas

Felagund

utilize a palava chave self

self.btt1

outra coisa, o JRuby converte os metodos em java par ao padrão ruby.

se não me engano você pode usar

frame.visible = true

[]'s

RChaves

Felagund:
utilize a palava chave self

self.btt1

outra coisa, o JRuby converte os metodos em java par ao padrão ruby.

se não me engano você pode usar

frame.visible = true

[]'s

realmente, não tinha pensado em usar o self, mas não adiantou cara, deu o seguinte erro:
undefined method `btt1’ for #<Java::Fronteira::TelaPrincipal:0x78482bad> (NoMethodError)

e não sabia que convertia os metodos pra esse padrao aih, como vc falou do .visible, vlw pela dica ^^

victorcosta

Não conheço JRuby mas tenta declarar sua variável como pública no Java ou fazer um get

RChaves

hmm, de fato eu declarando a variável como pública e usando self. funcionou, mas se eu estou modificando a própria classe, eu deveria ter acesso a suas variáveis privadas não?

Felagund

do jeito que vc criou o esquema ali, a variavel não é private.
crie um metodo get ao invez de deixar a variavel publica.

Criado 7 de setembro de 2009
Ultima resposta 8 de set. de 2009
Respostas 5
Participantes 3