JComboBox上的JScrollPane
我做了一个combobox,但有些元素比我的盒子宽度宽。 所以我尝试添加一个水平的scrolpane,我唯一能看到的是一个带有combobox的滚动条! Certanly我做错了。 所以这是我没有jscrolpane的代码。
issuerdocumentJComboBox=new JComboBox(issuermodel);//the compo box issuerdocumentJComboBox.setBounds(430, 120, 100, 30); searchDocumentesJPanel.add(issuerdocumentJComboBox);
如何在combobox中添加水平滚动条? 谢谢!
有可能的!! 这是我写的一个小程序来展示我的解决方案:
import java.awt.Component; import java.awt.Dimension; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ScrollPaneConstants; import javax.swing.plaf.basic.BasicComboBoxEditor; public class TestComboScroll { public static void main(String[] args) { JFrame frame = new JFrame("Scroll inside Combo"); JComboBox combobox = new JComboBox(); combobox.addItem(""); combobox.addItem("Item1"); combobox.addItem("Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2 Item2"); combobox.addItem("Item3"); combobox.setEditor(new MyEditor()); combobox.setEditable(true); combobox.setPreferredSize(new Dimension(200, 50)); frame.add(combobox); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } static class MyEditor extends BasicComboBoxEditor{ JScrollPane scroller = new JScrollPane(); //NOTE: editor is a JTextField defined in BasicComboBoxEditor public MyEditor(){ super(); scroller.setViewportView(editor); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); } /** Return a JScrollPane containing the JTextField instead of the JTextField **/ @Override public Component getEditorComponent() { return scroller; } /** Override to create your own JTextField. **/ @Override protected JTextField createEditorComponent() { JTextField editor = new JTextField(); editor.setBorder(null); /*editor.setEditable(false); //If you want it not to be editable */ return editor; } } }
方法是创建一个自定义ComboBoxEditor,在滚动窗格中显示JTextField编辑器 (更容易扩展BasicComboBoxEditor)。 然后重写getEditorComponent()
函数以返回滚动窗格而不是文本字段。
当你调用combobox.setEditor(new MyEditor())
时,会在内部调用这两个重写函数,所以如果看不到它被使用,请不要担心。
这是该程序的屏幕截图 ,显示了比combobox更宽的元素:
祝好运!! 🙂
- 在commons lang3中使用StringEscapeUtils.escapeJavaScript()的替代方法
- 如何在本地(在我的电脑上)网页上使用selenium webdriver而不是在www上找到somwhere?
- Spring Boot中的多个DataSource和JdbcTemplate(> 1.1.0)
- 从Java中的图像文件中读取文本
- Spring 4 WebSocket应用程序
- 如何捕获java.lang.NoClassDefFoundError?
- 如何获取小数点后的数字? (java)
- Java – 使用Timer时出错
- 弹性搜索java.lang.NoClassDefFoundError:org / elasticsearch / transport / Netty3Plugin