Para intimos do JScrollBar

Pessoal,
A tempos desisti de usar o JScrollBar por nao conseguir fazer com que ele nao fosse “rolado” quando eu nao quisesse.

Eu queria validar algo no valueAdjustmentChanged e que se fosse false, nao permitisse o valor mudar: a scroll deferia ficar do mesmo jeito.

Tentei, tentei e nao consegui. Contudo, para solucionar esse problema criei minha propria ScrollBar, claro que ficou uma m…da mas ta funcionando como eu queria:D Digamos que o método valueAdjusmentChanged retorna boolean.

Agora, gostaria de saber se alguem ja mexeu com isso, se conseguiu fazer algo do tipo, ou ate mesmo encontrado alguma scrollzinha bem implementada…

Abraços,

Kra, posso tá falando a maior besteira da terra, mas vc já tentou usar SWT ao invés do swing, pode ser que seja mais simples fazer o que vc quer lá…

falow kra, um abraço… :wink:

Mudar de uma coisa que vc ja conhece pra outra que vc nao conhece, soh pq vc nao esta conseguindo fazer algo naquilo que vc ja conhece eh meio absurdo, nao? :smiley:

Bruno, nao entendi direito o que vc esta querendo fazer… qual o comportamento que vc quer dar pra scrollbar?

Concordo com vc cv, ainda mais pq o projeto ja tem qse 2 anos… Imagina voltar e mudar tudo! - no way! -

Entao, eu to querendo falar pro scrollbar que, qdo alguem for clicar nele para rolar um certo conteudo, se um serto campo tiver um certo valor, o scrollbar nao pode continuar: nao pode ir para o proximo valor.

E ai é que mora o problema, nao consigo voltar atras ( fazer de conta que ninguem clicou na scrollbar ) dentro do método disparado pela scrollbar informando que ela foi mexida.

Será que deu pra entender ?

Abraços,

Olá

Bruno, se entendi corretamente você quer mudar o conceito do scrollbar, isto é, quer um scrollbar especial para um determinado trecho do seu sistema. Me parece meio estranho sob o ponto de vista de um usuário que o scrollbarem uma tela não funcione igual ao modo como todos estão acostumados.

Porque pura e simplesmente não desabilita o scrollbar nesta tela?

[]s
Luca

[quote=“Luca”]Olá

Bruno, se entendi corretamente você quer mudar o conceito do scrollbar, isto é, quer um scrollbar especial para um determinado trecho do seu sistema. Me parece meio estranho sob o ponto de vista de um usuário que o scrollbarem uma tela não funcione igual ao modo como todos estão acostumados.

Porque pura e simplesmente não desabilita o scrollbar nesta tela?

[]s
Luca[/quote]

Nao dá Luca… Se eu fosse desabilitar iria somente poder faze-lo no prorpio evento gerado pela scrollbar. E nao é so em um trecho do sistema: é nele todo:D
Imagina um cadastro de usuario com os campos distribuidos na tela. Imagina a scroll do lado para navegar no “buffer” de usuarios carregados, mostrando um a um nos campos. Imagina que vc permite a ediçao do campo idade, e este campo nao pode ser maior que 100. Dai o usuario infeliz ta navegando nos cadastrados e ve que quer alterar uma idade para maior que 100. Ele vai no campo, altera e clica no scrollbar para ir para o proximo registro, pois resolve alterar o proximo tb. Eu quero valiar na hora que ele clicar no scrollbar, emitindo uma mensagem e nao indo pro proximo ateh que ele acerto o valor incorreto. :twisted: rs…

É isso ae… Abraços

Olá

Mete um par Observer/Observable nestes campos que podem ser alterados e então faz a consistência quando observar a alteração.

[]s
Luca

[quote=“Luca”]Olá

Mete um par Observer/Observable nestes campos que podem ser alterados e então faz a consistência quando observar a alteração.

[]s
Luca[/quote]

Mas e se o cara clicar no botao “limpar campos” ou “sair”, vc nao pode consistir o campo. e ai, o que faço?..rs… :shock: :shock: :cry: :cry:

Se vc ja usou no forms - oracle, deve entender um pouco: seria como lançar uma raise ao rolar a scroll.

Valeuz.

Olá

Pattern observer do mesmo modo.

[]s
Luca

[quote=“Luca”]Olá

Pattern observer do mesmo modo.

[]s
Luca[/quote]

Hmm… vou procurar saber um pouco mais sobre esse cara ai…
Valeu Luca.

:frowning: :frowning: :frowning: Eu mandei um tutorial exemplificando o Observer pattern em Java para criar telas que não congelam mas nada de publicarem :cry: :cry: :cry:

Agora nem tenho mais ele … :shock:

Mas procure na API a classe Observer e a interface Observable … é bem simples.

:frowning: :frowning: :frowning: Eu mandei um tutorial exemplificando o Observer pattern em Java para criar telas que não congelam mas nada de publicarem :cry: :cry: :cry:

Agora nem tenho mais ele … :shock:

Mas procure na API a classe Observer e a interface Observable … é bem simples.[/quote]

Poxa smota! Ta parecendo eu perdendo as coisas na maquina… huahauahauha :roll:
Mas blz, vou dar uma olhada nesses observadores ai e ver o que consigo extrair deles. Mas se tivesse uns exemplos ia ser mais facil. Vou procurar aqui no GUJ.
Se isso matar meus problemas com as validacoes de campo, vou ser o programador mais feliz do mundo :smiley: huahauahauah…

Abraços,

[quote=“Luca”]Olá

Pattern observer do mesmo modo.

[]s
Luca[/quote]

Achei um link que da uma exemplo legal, mas nao vi a pratica disso num textfield… Como posso saber que foi alterado para validar ???

Vlz,

Perai, desde quando scrollbars servem pra mudar de registro em registro? Me parece que vc esta usando as analogias de UI erradas aqui, cara… O mais correto seria um conjunto de “player buttons”, tipo isso aqui:

Ta vendo os botoes “primeiro”, “anterior”, “proximo” e “ultimo”? Entao, nao complique a vida do usuario (e a sua!) usando scrollbars :wink:

Olá,

O que o Bruno ta querendo é fazer o mesmo que existe no Oracle Forms onde em um “bloco” multi-record se tu rolar a scrollbar ele altera os registros do bloco. Ou seja a scroll não serve para rolar a tela, mas sim “rolar” os registros.

Sinceramente acho que vai ser dificil colocar isso com o Swing. Mas como conheco pouco de Swing não posso afirmar.

[]'s

Olá

Veja também este outro link: Documents and Views, Observables and Observers

Separei e traduzi algumas coisas do artigo acima:

Interação entre quem deve ser observado (extende Observable) e quem observa (implementa Observer)

O objeto a ser observado é uma subclasse de Observable. O objeto que observa é uma implementação da interface Observer.

O método addObserver() pode ser chamado pelo objeto observador ou por um outro objeto que gerencia ou cria o observador.
O objeto que extende Observable chama setChanged() e notifyObservers() para notificar uma alteração.
Como parte desta notificação, a superclasse Observable chama update() para os objetos observadores registrados.

Exemplo tirados do artigo lá de cima:

import java.util.Observable;
public class Watched extends Observable
{
	private int data = 0;
	public int getData()
	{
		return data;
	}

	public void setData(int data)
	{
		if ( this.data != data )
		{
			this.data = data;
			setChanged();
		}
		notifyObservers();
	}
}
import java.util.Observable;
import java.util.Observer;

public class Watcher implements Observer
{
	public Watcher(Watched w)
	{
		w.addObserver(this);
	}

	public void update(
		Observable o, Object arg)
	{
		System.out.println("Data has changed to " +
			((Watched)o).getData());
	}
}
public class TestClass
{
	public static void main(String[] args)
	{
		Watched doc = new Watched();
		Watcher watch = new Watcher(doc);
		doc.setData(1);
		doc.setData(2);
		doc.setData(2);
		doc.setData(3);
	}
}

Compile e execute este e o outro exemplo do GUJ e as coisas ficarão mais claras. Veja o método update na API do Java.

[]s
Luca

[quote=“cv”]Perai, desde quando scrollbars servem pra mudar de registro em registro? Me parece que vc esta usando as analogias de UI erradas aqui, cara… O mais correto seria um conjunto de “player buttons”, tipo isso aqui:
[/quote]

cv, os botoes eu tenho… :smiley: Mas o scroll da um look mais “rolavel”. Como as vezes sao mais de um grupo de registros na tela, fica melhor colocar o scroll do lado, pois pelo scroll da pra saber se existem mais registros, e se sao mts, entende? Fora que esse negocio de scroll nem foi ideia minha, mas fui “obrigado” a colocar pra nao ficar mto “diferente” da aplicação anterior… :x

[quote=“fabgp2001”]Olá,

O que o Bruno ta querendo é fazer o mesmo que existe no Oracle Forms onde em um “bloco” multi-record se tu rolar a scrollbar ele altera os registros do bloco. Ou seja a scroll não serve para rolar a tela, mas sim “rolar” os registros.

Sinceramente acho que vai ser dificil colocar isso com o Swing. Mas como conheco pouco de Swing não posso afirmar.

[]'s[/quote]

Pois é fabio, é EXATAMENTE isso que eu to ffazendo. Só que , como ficou impossivel usar o scrollbar eu tive que criar um scrollbar eu mesmo. Tentei extender o JScrollBar mas num deu certo pq tinha q botar uns eventos meios estranhos. Dai criei meu proprio scroll e tá dando certo ( ja faz mais de um ano que ta legal ).

Hoje com o meu scroll funciona igual ao forms, só que eu queria saber pq diaxo nao funciona o JScrollBar ou mesmo as reviravoltas para faze-lo funcionar nesse esquema.

O luca deu uma ideia usando os Observers, só ainda nao entendi como usar…rssss :roll: Mas ja to lendo sobre eles…


Valeu Luca! vou estudar isso… vou ver se consigo aplicar alguma coisa do tipo na minha aplicação.

Valeu!

Até que é uma idéia interessante: rolar registros pela Scroll. :smiley:
Mas seria legal você contar os registros e fazer a rolagem proporcional, ou seja, muitos registros a rolagem fica menos sensível, desce menos.
Realmente eu nunca vi algo assim, os botôes << < > >> etc são o normal em Delphi/VB por causa dos DataControls. No Swing você vai ter que fazer mão, até criar um componente para isso e reutilizar.
Isso é o tipo da coisa que só se usa em arquivos pequenos, onde o usuário navega entre os registros.

[quote=“dsiviotti”]Até que é uma idéia interessante: rolar registros pela Scroll. :smiley:
Mas seria legal você contar os registros e fazer a rolagem proporcional, ou seja, muitos registros a rolagem fica menos sensível, desce menos.[/quote]

Douglas,

Pois eu acho que se a idéia do Bruno pe fazer igual ao forms ele funciona exatamente assim. Muitos registros a rolagem é mais sencivel e vice-versa.

[]'s