Existe Componente Moeda pronto?

Olá galera…
Para componentes para “datas” temos vários bons componentes, vide NachoCalendar e JCalendar. E para Imagens e Moeda, será que não existe uns componentes? alguém conhece?
Obrigado!!! :smiley:

Existe uma biblioteca chamada Ime And money do Eric Evans mas eu não recomendo seu uso. Para aplicações simples com uma moeda só eur ecomendo que você crie sua própria classe, baseada em centavos. Na Mundo Java #17 tem um exemplo.

Seria essa daqui?
http://timeandmoney.domainlanguage.com

Dei uma olhada nela depois q li o seu artigo, e gostaria de saber pq vc não recomenda o uso dela.

Eu Tenho esta revista! vou fazer uma herança de JFormatedTextField…
e criar meu proprio componente money…
em qto a imagen alguém conhece algum componente?
obrigado…

Mas para quê???Tratamento de Gif,jpg?Redesenho???
Vá aqui em Java and images:
http://schmidt.devlib.org/java/index.html

Um componente para *.jeg,…

Timeandmoney usa métodos estáticos em demasia, o que ferram testes unitários. Mandei um patch retirando alguns mas nunca obtive resposta.

Mas pera aí, você quer um componente que exiba o valor formatado em moeda? Não tinha reparado que este era o fórum de interface gráfica :?

Neste caso uma máscara deve servir sim.

[quote=pcalcado]Timeandmoney usa métodos estáticos em demasia, o que ferram testes unitários. Mandei um patch retirando alguns mas nunca obtive resposta.
[/quote]

humm, é verdade baixei para dar uma estudada, estou usando como inspiração para algo semelhante já que terei de manipular valores. Comecei fazendo com long como descrito no artigo, mas comecei a ter problemas com cálculos, (no caso divisões e precisão), a classe Ratio ajuda, mas como tudo usa BigDecimal estou com um pé atrás.

Tem como vc enviar esse path para mim? Como eu desmontei e refiz as classes, misturando outras q achei (para aproveitar tb refiz os testes e implementei vários outros, foi um bom aprendizado) acho q esse patch pode complementar o q andei vendo.

[quote=pcalcado]
Mas pera aí, você quer um componente que exiba o valor formatado em moeda? Não tinha reparado que este era o fórum de interface gráfica :? [/quote]

ops, é verdade, tb não tinha visto.

Ola galera!

Estou tentando criar um componente JMoedaField usando um objeto da classe Moeda (Mundo java nº. 17) como value do meu JMoedaField…
vejam o codigo do Moeda…


public class Moeda
{
	private long centavos = 0;

	public Moeda(long centavos)
	{
		this.centavos = centavos;
	}

	public Moeda(long inteiro, int centavos)
	{
		this.centavos = (inteiro * 100) + centavos;
	}

	public long getValorCentavos()
	{
		return centavos;
	}

	public long getValorInteiro()
	{
		return centavos / 100;
	}

	public Moeda somarCom(Moeda outra)
	{
		return new Moeda(this.centavos + outra.getValorCentavos());
	}

	public Moeda subtrair(Moeda outra)
	{
		return new Moeda(this.centavos - outra.getValorCentavos());
	}
	
	public String toString()
	{
		return Long.toString(getValorInteiro());
	}
	

	@Override
	public int hashCode()
	{
		final int PRIME = 31;
		int result = 1;
		result = PRIME * result + (int) (centavos ^ (centavos >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj)
	{
		if (!(obj instanceof Moeda))
		{
			return true;
		}
		
		Moeda outra = (Moeda) obj;

		return outra.getValorCentavos() == this.getValorCentavos();
	}
}


E Vejam o componente…

public class JMoedaField extends JFormattedTextField
{
	private static final long serialVersionUID = 1L;

	private Moeda valueMoeda;

	public JMoedaField()
	{
		super(new Moeda(0));

		DecimalFormat decimal = new DecimalFormat("#,##0.00");
		NumberFormatter numFormatter = new NumberFormatter(decimal);
		numFormatter.setFormat(decimal);
		numFormatter.setAllowsInvalid(false);
		setFormatterFactory(new DefaultFormatterFactory(numFormatter));
	}

	public Moeda getValueMoeda()
	{
		System.out.println("passou no get! "+valueMoeda.getValorInteiro());
		return valueMoeda;
	}

	public void setValueMoeda(Moeda valueMoeda)
	{
		System.out.println("passou no set! "+valueMoeda.getValorInteiro());
		this.valueMoeda = valueMoeda;
	}

}

Eu agradeço a ajuda…

Se sua classe é um JTextField, o q esse super faz aí?
Acho que vc tá misturando as coisas…tipo a formatação da moeda com a validação.Se vc quer apenas formatar, acho que extender JTextField basta não?

Encontrei o email mas o patch foi apagado :frowning:

De qualquer maneira, era uma modifcação em cima das classes de data, especialmente métodos estáticos e construtores privados. Me lembro que não havia modo de criar um NullObject para datas.

Eu resolvi o problema de uma forma bem prática: JODA Time.

A ideia era criar um componente com aquela maskara…
mas qdo o eu der um getValue, voltar um objeto “moeda” com os valores escrito no JMoedaField…
entendeu?
obrigado pela ajuda e ate mais…

  1. Junto estão os fontes de uma implementação minha do padrão Money (dinheiro é diferente de moeda, cuja classe é Currency e é padrão do java)
    Ainda não tem todos os comentários , por isso qualquer duvida é só perguntar.
    Dinheiro implica o uso de moeda. A Classe não força o use de nenhum classe particular para moeda. Pode usar a sua ppr classe desde que tenha equals bem definido. Se não tiver uma classe especial para isso ,pode usar java.util.Currency para a moeda que quiser.
    Lemberem-se que a classe é genérica , para se usada com qualquer moeda.

  2. Para mostrar valores monetários num JTextField basta usar um MaskFormat , mas atenção que o o formato é diferente conforme a moeda. Mas se é só para real, é bem simples. Não use R$ pq só atrapalha . Se tiver que mostrar R$ use um JLabel ao lado , ou coisa assim.

obrigado pela ajuda!
amanha irie usa - la!
at+ e muito obrigado!