gpt4 book ai didi

java - 从列表中获取选定的对象

转载 作者:行者123 更新时间:2023-11-30 01:46:45 25 4
gpt4 key购买 nike

这是我第一次使用MouseListener,我不知道如何实现它。

代码如下:

 DefaultListModel<Object> listModel = new DefaultListModel<Object>();
try {
listModel = readLines(file);
//this function basically converts the file in a defaultlistmodel
} catch (Exception e) {
e.printStackTrace();
}

JList<Object> list = new JList<Object>();
list.setModel(listModel);
JScrollPane scrollPane = new JScrollPane(list);
list.setBackground(Color.WHITE);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
scrollPane.setBounds(10, 21, 130, 267);
westPanel.add(scrollPane, BorderLayout.CENTER);

我想要的是创建一个鼠标监听器,当我从列表(滚动 Pane )中单击一个Object时,保存它(getElementAt(index))并在其他地方实现它,例如在不同的文本字段中。

最佳答案

不要JList 上使用 MouseListener。而是使用 ListSelectionListener专为该任务而构建。

这是我在意识到您仅根据该提示解决了问题之前整理的一个简短示例。所以无论如何我都会发布它。 😉

enter image description here

import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class FontSelector {

FontSelector() {
JPanel fontSelectorPanel = new JPanel(new BorderLayout(4, 4));
GraphicsEnvironment ge = GraphicsEnvironment.
getLocalGraphicsEnvironment();
String[] fonts = ge.getAvailableFontFamilyNames();
final JList fontList = new JList(fonts);
fontSelectorPanel.add(new JScrollPane(fontList));
fontList.setCellRenderer(new FontCellRenderer());
fontList.setVisibleRowCount(10);

final JTextArea textArea = new JTextArea(
"The quick brown fox jumps over the lazy dog.", 3, 20);
fontSelectorPanel.add(new JScrollPane(
textArea), BorderLayout.PAGE_END);
textArea.setEditable(false);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);

ListSelectionListener fontListener = (ListSelectionEvent e) -> {
String fontName = fontList.getSelectedValue().toString();
textArea.setFont(new Font(fontName, Font.PLAIN, 50));
};
fontList.addListSelectionListener(fontListener);
fontList.setSelectedIndex(0);
JOptionPane.showMessageDialog(null, fontSelectorPanel);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new FontSelector();
});
}
}

class FontCellRenderer extends DefaultListCellRenderer {

@Override
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(
list, value, index, isSelected, cellHasFocus);
Font font = new Font((String) value, Font.PLAIN, 20);
label.setFont(font);
return label;
}
}

关于java - 从列表中获取选定的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com