Srs.
Tenho um JComboBox que possui um tamanho inferior aos seus ítens, portanto quando clico para fazer a seleção os ítens são truncados e não consigo fazer a leitura completa dos ítens da lista. Existe a possibilidade de vizualizar estes itens por completo usando algum recurso da linguagem. Algo do tipo setToolTipText para cada ítem da lista do JComboBox.
Estou enviando anexo um print-screen da tela para que possa ajudar no esclarecimento da dúvida.
Olavo Jr.
Olavo, acho que isso foi discutido por esses dias por aqui.Veja esse link para expandir sua JComboBox:
http://www.jroller.com/santhosh/entry/make_jcombobox_popup_wide_enough
Olá Ironlynx,
Obrigado por sua resposta. Através do link que você encaminhou, abriu-me novos caminhos para procurar uma solução e cheguei a este endereço http://www.javakb.com/Uwe/Forum.aspx/java-gui/1513/JComboBox-Scroll-Bar-Colors e consegui implementar a idéia do Andrew Chase e terminei por colocar uma barra de rolagem horizontal.
No exemplo que você me mostrou, pra mim não serviu pois mesmo usando toda área visível horizontalmente do monitor não era suficiente para mostrar a linha completa do JComboBox e esteticamente ficava desagradável.
Obrigado pela alteranativa indicada.
Abraços.
Olavo Jr.
Olá Olavo-Brito
Me desculpe levantar novamente o topico, mas você poderia me dar uma força na contruçao deste combo? Estou usando o Netbeans e não estou familiarizado com o desenvolvimento Desktop.
Ví que você sobrescreveu a classe JComboDesktop…você poderia me mandar um exemplo?
grato.
Caro rockstorm,
Segue código de minha classe que extende o JComboBox, a qual foi a solução de meu problema.
/**
* Data de Criação...: 17/09/2010 - 14:01.
* Descrição.........: Classe de Controle - Novo JComboBox - adicionado scroll horizontal.
* Sistema...........: Gênesis - Módulo Gerais.
* MVC...............: Controller.
* Localização.......: /src/controller/gerais.
* Autor.............: Olavo Jr.
* Email.............: olavo_brito@hotmail.com
*
* Implementado com base na solução encontrada em: <a href="http://www.javakb.com/Uwe/Forum.aspx/java-gui/1513/JComboBox-Scroll-Bar-Colors">
* Crédito para o Sr. Andrew Chase.
*/
package controller.gerais;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.plaf.basic.BasicComboPopup;
import javax.swing.plaf.basic.ComboPopup;
import javax.swing.plaf.metal.MetalComboBoxUI;
public class GnsCtrGrs1j extends JComboBox{
private static final long serialVersionUID = 1L;
public GnsCtrGrs1j() {
super();
setUI(new GnsCtrGrs1jUI());
}
public GnsCtrGrs1j(ComboBoxModel aModel) {
super(aModel);
setUI(new GnsCtrGrs1jUI());
}
public class GnsCtrGrs1jUI extends MetalComboBoxUI {
protected ComboPopup createPopup() {
GnsBasicComboPopup popup = new GnsBasicComboPopup(comboBox);
return popup;
}
}
public class GnsBasicComboPopup extends BasicComboPopup {
private static final long serialVersionUID = 1L;
GnsBasicComboPopup(JComboBox box){
super(box);
}
protected JScrollPane createScroller() {
JScrollPane pane = new JScrollPane(list,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
return pane;
}
}
}// Encerra a classe GnsCtrGrs1j.
[quote=Olavo-Brito]Caro rockstorm,
Segue código de minha classe que extende o JComboBox, a qual foi a solução de meu problema.
[code]
/**
- Data de Criação…: 17/09/2010 - 14:01.
- Descrição…: Classe de Controle - Novo JComboBox - adicionado scroll horizontal.
- Sistema…: Gênesis - Módulo Gerais.
- MVC…: Controller.
- Localização…: /src/controller/gerais.
- Autor…: Olavo Jr.
- Email…: olavo_brito@hotmail.com
-
- Implementado com base na solução encontrada em:
- Crédito para o Sr. Andrew Chase.
*/
package controller.gerais;
import javax.swing.ComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.plaf.basic.BasicComboPopup;
import javax.swing.plaf.basic.ComboPopup;
import javax.swing.plaf.metal.MetalComboBoxUI;
public class GnsCtrGrs1j extends JComboBox{
private static final long serialVersionUID = 1L;
public GnsCtrGrs1j() {
super();
setUI(new GnsCtrGrs1jUI());
}
public GnsCtrGrs1j(ComboBoxModel aModel) {
super(aModel);
setUI(new GnsCtrGrs1jUI());
}
public class GnsCtrGrs1jUI extends MetalComboBoxUI {
protected ComboPopup createPopup() {
GnsBasicComboPopup popup = new GnsBasicComboPopup(comboBox);
return popup;
}
}
public class GnsBasicComboPopup extends BasicComboPopup {
private static final long serialVersionUID = 1L;
GnsBasicComboPopup(JComboBox box){
super(box);
}
protected JScrollPane createScroller() {
JScrollPane pane = new JScrollPane(list,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
return pane;
}
}
}// Encerra a classe GnsCtrGrs1j.
[/code][/quote]
Bom dia Olavo!!!
Tenho uma dúvida???
Neste exemplo tenho que criar uma nova classe???
Tenho o mesmo problema que você sobre o Jcombobox, tenho itens maiores que a caixa do jcombobox???
Bom dia diegodtsa,
Sim você precisa criar uma nova classe que “extends” a JComboBox e implementar de acordo com a classe que esta descrita no e-mail anterior. Após isto é somente instanciar onde quiser usar.
Olavo Jr.
[quote=Olavo-Brito]Bom dia diegodtsa,
Sim você precisa criar uma nova classe que “extends” a JComboBox e implementar de acordo com a classe que esta descrita no e-mail anterior. Após isto é somente instanciar onde quiser usar.
Olavo Jr.[/quote]
Blz, vou tentar fazer aqui, qualquer dúvida eu volto
[quote=Olavo-Brito]Bom dia diegodtsa,
Sim você precisa criar uma nova classe que “extends” a JComboBox e implementar de acordo com a classe que esta descrita no e-mail anterior. Após isto é somente instanciar onde quiser usar.
Olavo Jr.[/quote]
No Netbeans como faço, já criei a classe, e agora o que eu faço???
Sei que pediu pra eu instanciar a classe como faço isso???
Caro diegodtsa,
Logo após ter criado a classe com os dados que estão no e-mail, para fazer uso da nova classe é tão somente instanciá-la !
// Você já faz assim !
JComboBox jcb1 = new JComboBox();
// Agora você irá fazer assim !
NomeDaClasseQueExtendeAJComboBox jcb1 = new NomeDaClasseQueExtendeAJComboBox();
Olavo Jr.