Vizualizar linha completa em um JComboBox... [RESOLVIDO - Adicionado barra de rolagem horizontal]
9 respostas
O
Olavo-Brito
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.
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.
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.
O
Olavo-Brito
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.............: [email removido] * * 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. */packagecontroller.gerais;importjavax.swing.ComboBoxModel;importjavax.swing.JComboBox;importjavax.swing.JScrollPane;importjavax.swing.ScrollPaneConstants;importjavax.swing.plaf.basic.BasicComboPopup;importjavax.swing.plaf.basic.ComboPopup;importjavax.swing.plaf.metal.MetalComboBoxUI;publicclassGnsCtrGrs1jextendsJComboBox{privatestaticfinallongserialVersionUID=1L;publicGnsCtrGrs1j(){super();setUI(newGnsCtrGrs1jUI());}publicGnsCtrGrs1j(ComboBoxModelaModel){super(aModel);setUI(newGnsCtrGrs1jUI());}publicclassGnsCtrGrs1jUIextendsMetalComboBoxUI{protectedComboPopupcreatePopup(){GnsBasicComboPopuppopup=newGnsBasicComboPopup(comboBox);returnpopup;}}publicclassGnsBasicComboPopupextendsBasicComboPopup{privatestaticfinallongserialVersionUID=1L;GnsBasicComboPopup(JComboBoxbox){super(box);}protectedJScrollPanecreateScroller(){JScrollPanepane=newJScrollPane(list,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);returnpane;}}}// Encerra a classe GnsCtrGrs1j.
D
diegodtsa
Olavo-Brito:
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.............: [email removido] * * 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. */packagecontroller.gerais;importjavax.swing.ComboBoxModel;importjavax.swing.JComboBox;importjavax.swing.JScrollPane;importjavax.swing.ScrollPaneConstants;importjavax.swing.plaf.basic.BasicComboPopup;importjavax.swing.plaf.basic.ComboPopup;importjavax.swing.plaf.metal.MetalComboBoxUI;publicclassGnsCtrGrs1jextendsJComboBox{privatestaticfinallongserialVersionUID=1L;publicGnsCtrGrs1j(){super();setUI(newGnsCtrGrs1jUI());}publicGnsCtrGrs1j(ComboBoxModelaModel){super(aModel);setUI(newGnsCtrGrs1jUI());}publicclassGnsCtrGrs1jUIextendsMetalComboBoxUI{protectedComboPopupcreatePopup(){GnsBasicComboPopuppopup=newGnsBasicComboPopup(comboBox);returnpopup;}}publicclassGnsBasicComboPopupextendsBasicComboPopup{privatestaticfinallongserialVersionUID=1L;GnsBasicComboPopup(JComboBoxbox){super(box);}protectedJScrollPanecreateScroller(){JScrollPanepane=newJScrollPane(list,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);returnpane;}}}// Encerra a classe GnsCtrGrs1j.
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???
O
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.
D
diegodtsa
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.
Blz, vou tentar fazer aqui, qualquer dúvida eu volto
D
diegodtsa
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.
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???
O
Olavo-Brito
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 !JComboBoxjcb1=newJComboBox();// Agora você irá fazer assim !NomeDaClasseQueExtendeAJComboBoxjcb1=newNomeDaClasseQueExtendeAJComboBox();