Caro Felipe,

Ainda não insisti, mas sempre que atualizei o modelo mais tarde, para JTable, JList, JTree, entre outros, dá um problema como esse. Por outro lado, qual seria na necessidade do método setSelectionModel()? Não seria necessário realizar uma chamada a um outro método para que a mudança se estabeleça?

Atenciosamente,

Hildeberto Mendonça

Felipe Gaúcho wrote:
Isso não é possível porque eu compartilho o mesmo JColorChosser para vários modelos..
 
eu tenho uma árvore (JTree) onde cada nó tem um ColorSelectionModel. Cada vez que o usuário clica em um nó, o JColorChooser - que fica visível em um painel à parte - deveria atualizar a cor selecionada, trocando o modelo, etc...
 
ou seja, não tenho apenas um modelo e uma visão, tenho vários modelos que deveriam compartilhar a mesma visão se esta funcionasse :^))
 
Já mandei um report de Bug para a SUN e estou esperando para ver se é alguma falha minha ou algum vacilo dos caras lá...
 
valeu,
 
    Felipe Gaúcho 
-----Mensagem original-----
De: Hildeberto Mendonça [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 12 de dezembro de 2003 17:19
Para: [EMAIL PROTECTED]
Assunto: Re: [cejug-discussao] Problemas usando o JColorChooser

Caro Felipe,

instancie primeiro o model, depois passe-o por parâmetro para o construtor de chooser ao instanciá-lo. Retire a linha chooser.setSelectionModel() do construtor da classe.

Veja se funciona.

Atenciosamente,

Hildeberto Mendonça

Felipe Gaucho wrote:
Aparentemente, o JColorChooser é MVC, mas no exemplo abaixo a interface não reage à mudanças no modelo.. Alguém tem algum dica do porquê ?

 
 
 import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.colorchooser.*;
 
public class Test extends JFrame implements ActionListener {
 private JColorChooser chooser = new JColorChooser();
 private DefaultColorSelectionModel model = new DefaultColorSelectionModel();
 private JButton bb = new JButton("do it");
 
 Test() {
  super("?");
  getContentPane().setLayout(new BorderLayout());
  getContentPane().add(chooser, BorderLayout.CENTER);
  getContentPane().add(bb, BorderLayout.NORTH);
  bb.addActionListener(this);
 
  chooser.setSelectionModel(model);
 
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setSize(300, 300);
  setVisible(true);
 }
 

 public static void main(String[] uu) {
  new Test();
 }
 
 public void actionPerformed(ActionEvent e) {
  model.setSelectedColor(new Color((int)(Math.random()*255), (int)(Math.random()*255), (int)(Math.random()*255)));
  System.out.println("color changed?");
 }
}

-- 
Hildeberto Mendonça
Mentores Consultoria LTDA.
www.mentores.com.br

-- 
Hildeberto Mendonça
Mentores Consultoria LTDA.
www.mentores.com.br


Responder a