Olá pessoal, tudo bem??
Bom, vou logo ao assunto… Estou fazendo uns componentes para minhas aplicações em java, mas estou encontrando dificuldades em setar algumas propriedades e fazê-las aparecer corretamente na lista de propriedades do componete.
Já entendi que para que um componente tenha representação visual em tempo de Design ele precisa extender algum outro que seja visual… entendi que para alguma propriedade básica, precisa ter os Getters e Setters com mesmo nome e tipo da propriedade para aparecer na lista de propriedades do NetBeans, pelo que entendi ele usa Introspecção/Refletion para isso… mas os meus problemas começam quando preciso de uma listagem numa daquelas propriedades, vou explicar:
Preciso por exemplo que em vez de como se faz com componentes não-visuais, instanciar um objeto com uma de suas constantes para realizar algum função…
exemplo:
em vez disso preciso que a listagem apareça na lista de propriedades dos objetos, como um combo por exemplo, na lista de propriedades…
tudo bem, pelo que andei lendo se faz isso com uma classe ENUM, mas não me ficou muito claro como faço isso e como isso acontece…
e tem diferentes tipos e enumerações, tipo, no combo na caixa de propriedades mostra STRINGs (Textos descritivos), mas por baixo seta um INT ou um BOOLEAN, ou o que vc quiser…
Será que alguém consegue me esclarecer melhor como isso funciona…
Agradeço a atenção
Boa pergunta!
rsrs
so pra descontrai…
ta tensa a luta aqui, tu sabe bem, tamo junto…
bom não entendi muita bem o que você quer. Mas com relação a classes Enum sobre código e descrição. Um exemplo só para ajudar
// Listando os Enums
PRIMEIRO_ENUM(1, "Primeiro Enum"),// Segundo parametro que será a descrição da combo.
SEGUNDO_ENUM(2, "Segundo Enum"),
TERCEIRO_ENUM(3, "Terceiro Enum");
public integer cdEnum;
public string deEnum;
//Coloca que tipos de parametros o construtor vai aceitar neste caso , integer e string.
private Classeqq(Integer cdEnum, String deEnum) {
this.cdEnum= cdEnum;
this.deEnum= deEnum;
}
//crie os get e sets
bom essa é a classe Enum. No caso para um combo você usa uma lista. No caso a ClasseQQ por ser um Enum tem o metodo .values() que retorna o valor dos enums. Pode fazer dentro de 1 for, e adicionando a uma outra lista de código e descrição, setando cada iteração o valor do enum. E a validação ao clicar em uma opção da combo, voce verifica atraves do getCdEnum, se é 1, 2 ,3 e faz o que você quer. Não sei se era muito bem isso que voce queria saber, mas é isso.
corrigindo Integer e String, fiz direto aqui dai nem me toquei
é mais ou menos isso, vamos olhar para o exmplo:
/**
* Sets the horizontal alignment of the icon and text.
* {@code AbstractButton}'s default is {@code SwingConstants.CENTER},
* but subclasses such as {@code JCheckBox} may use a different default.
*
* @param alignment the alignment value, one of the following values:
* <ul>
* <li>{@code SwingConstants.RIGHT}
* <li>{@code SwingConstants.LEFT}
* <li>{@code SwingConstants.CENTER}
* <li>{@code SwingConstants.LEADING}
* <li>{@code SwingConstants.TRAILING}
* </ul>
* @throws IllegalArgumentException if the alignment is not one of the
* valid values
* @beaninfo
* bound: true
* enum: LEFT SwingConstants.LEFT
* CENTER SwingConstants.CENTER
* RIGHT SwingConstants.RIGHT
* LEADING SwingConstants.LEADING
* TRAILING SwingConstants.TRAILING
* attribute: visualUpdate true
* description: The horizontal alignment of the icon and text.
*/
public void setHorizontalAlignment(int alignment) {
if (alignment == horizontalAlignment) return;
int oldValue = horizontalAlignment;
horizontalAlignment = checkHorizontalKey(alignment,
"horizontalAlignment");
firePropertyChange(HORIZONTAL_ALIGNMENT_CHANGED_PROPERTY,
oldValue, horizontalAlignment);
repaint();
}
esse é o código que seta o valor “horizontalAlignment” de um JButton, mas na interface do NetBeans, na paleta de Propriedades do componente, ele está representado como um ComboBox com a seguinte listagem: [color=green]“LEFT, CENTER, RIGHT, LEADING, TRAILING”[/color];
note que é setado um INT, mas no combo é mostrado STRING…
gostaria de saber as várias madeiras de fazer isso… a melhor maneira… e como isso tudo acontece por baixo…
Além se habilita?
NADA? ninguem nunca criou componentes e precisou usar algo assim?
HELP, PLEASE!!
Será que alguém pode me ajudar por favor?
Agradeço…