Tag: jlist

根据内容展开JList行高

我有一个简单的问题让我疯狂。 我有一个JList,并希望它的单元格根据其内容进行扩展,这是可变长度的文本。 所以我创建了一个CustomCellRenderer,如下所示: @Override public Component getListCellRendererComponent(final JList list, final Object value, final int index, final boolean isSelected, final boolean hasFocus) { final String text = (String) value; final JTextArea ta = new JTextArea(); ta.setText(text); ta.setFont(new Font(“Dialog”, Font.PLAIN, (int) Theme.FONTSIZE_TEXT)); ta.setForeground(Theme.FONTCOLOR_CONTENT); ta.setLineWrap(true); ta.setWrapStyleWord(true); ta.setColumns(0); ta.setBorder(BorderFactory.createEmptyBorder(10, Theme.PADDING, 0, 0)); return ta; } 但是单元格只有一个文本行高,而JTextArea的其余部分被截断。 如果我加 ta.setPreferredSize(new Dimension(0, […]

JList添加/删除项目

嗨我必须从JList中选择一个元素到另一个,从第一个中删除它我创建的方法只插入一个元素,覆盖最后一个元素并且不从第一个JList中删除所选项目这里是代码: 第一个清单 private javax.swing.JList listaRosa; 填充此方法: private void visualizzaRosaButtonvisualizzaRosa(java.awt.event.ActionEvent evt) { // TODO add your handling code here: visualizzaSquadraSelezionata(); String fileSquadra; fileSquadra = squadraDaVisualizzare.getText(); DefaultListModel listModel = new DefaultListModel(); try { FileInputStream fstream = new FileInputStream(“C:/Users/Franky/Documents/NetBeansProjects/JavaApplication5/src/javaapplication5/Rose/”+fileSquadra+””); // Get the object of DataInputStream DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; […]

禁用单个JComboBox项

这是一个相当普遍的问题,我使用的解决方案类似于我之后搜索和发现的解决方案。 一个实现带有JLabel的ListCellRenderer ,它根据当前选定的索引启用或禁用自身: public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setText(value.toString()); UIDefaults defaults = UIManager.getDefaults(); Color fc; if (index == 1) { setEnabled(false); fc = defaults.getColor(“Label.disabledForeground”); setFocusable(false); } else { // fc = defaults.getColor(“Label.foreground”); fc = list.getForeground(); setEnabled(list.isEnabled()); setFocusable(true); } setForeground(fc); setBackground(isSelected ? list.getSelectionBackground() : list .getBackground()); return this; […]

JList.getModel()ClassCastException

当我调用JList.getModel()并将其JList.getModel()为DefaultListModel它给了我这个exception。 Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel 抛出它的代码: private JList list = new JList(); ((DefaultListModel) list.getModel()).addElement(…); 但它并不是每次都这样做。 大部分时间它完美地运行,但有时它会抛出这个exception。 我不明白为什么会这样。 有什么办法可以阻止这种情况发生吗?

在运行时更改JList行颜色

我试图动态更改JList行。 我需要更改第n行颜色,突出显示它(编译期间n是未知的)。 我看到很多自定义ListCellRenderer的例子,但都是“静态的”。 换句话说,我有J行与x行。 在运行期间,我的“业务逻辑”检测到第n行很重要。 所以我想让它的背景变绿,等待一秒,然后再将它变成白色。 还有一件事,不要改变行选择。 这样做的最佳方法是什么?

Java Swing:JList与ListCellRenderer选择的项目高度不同

我正在制作自定义ListCellRenderer。 我知道每个单元格可以有不同的尺寸。 但是现在我希望为所选单元格设置不同的维度。 不知何故,JList在第一次计算每个单元格的边界时,为每个单独的单元格缓存维度。 这是我的代码: public class Test { static class Oh extends JPanel { public Oh() { setPreferredSize(new Dimension(100, 20)); } protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.WHITE); g.fillRect(0, 0, getWidth(), getHeight()); } } static class Yeah extends JPanel { private boolean isSelected; public Yeah(boolean isSelected) { setPreferredSize(new Dimension(100, 100)); this.isSelected = isSelected; } […]

刷新JFrame中的JList

我有一个显示矢量信息的JList。 然后,用户可以添加和删除此向量中的信息。 当从Vector中添加/删除项目时,是否可以刷新JFrame中的JList? 目前我正在做.. list = new JList(names); jframe.add(new JScrollPane(list), BorderLayout.CENTER); 但是这并没有将JList刷新为任何新东西。 我检查,我的矢量内容等确实改变,但列表不刷新。 为什么? 我该怎么解决?

在Jlist项中添加ToolTipText

public static void populateJList(JList list) { ArrayList contents= DataAccess.getContents(); DefaultListModel listModel = new DefaultListModel(); for (String string : contents) { listModel.addElement(string); } preset.setModel(listModel); } 我有这个方法来填充我的JList,有没有办法可以添加JList中每个项目的toolTipText ?

无法向JList添加复选框

我是编程的新手,我无法将JCheckbox添加到JList 。 没有错误但没有显示任何内容。 JFrame f=new JFrame(); String[] labels={“a”,”b”,”c”,”d”,”e”}; JCheckBox[] ch=new JCheckBox[labels.length]; JList list=new JList(); for (int i = 0; i < labels.length; i++) { ch[i]=new JCheckBox("CheckBox"+i); list.add(ch[i]); } JScrollPane pane=new JScrollPane(list); f.add(pane); f.setVisible(true);

使用拖放重新排序JList

我遇到了一个关于使用拖放重新排序JList中的元素的问题。 以下代码是对代码的修改,您可以将元素从一个JList拖动到另一个JList(仅以一种方式工作)。 我试图让它只用于一个JList,但是元素甚至不能被拖出列表。 所以我想这不可能这样做。 我有什么不对的想法? 我的想法是让它为带有缩略图的Jlist工作,但因为我甚至无法让它只使用字符串…我一直在研究几个D’n’D教程,但我仍然不能让它工作。 任何帮助表示赞赏。 import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.datatransfer.*; import java.io.IOException; public class DragAndDrop extends JFrame { DefaultListModel transport = new DefaultListModel(); JList transportList = new JList(transport); public DragAndDrop() { setLayout(new FlowLayout()); transport.addElement(“Bike”); transport.addElement(“Car”); transport.addElement(“Truck”); transport.addElement(“Boat”); JScrollPane transportScroll = new JScrollPane(transportList); transportScroll.setBorder(new TitledBorder(“Transportation”)); add(transportScroll); transportList.setDragEnabled(true); transportList.setTransferHandler(new TransferHandler() { int […]