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
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
|