#java #swing #mouseevent #jlist
#java #качать #mouseevent #jlist
Вопрос:
Я пытаюсь заполнить a JTextArea
из a JList
, когда пользователь дважды щелкает по элементу. Я не совсем уверен, как это сделать, вот что у меня есть на данный момент.
// Create Top Right JPanel and JList
String[] listB = { "Some content on the right panel", "More content", "Some more content", "More and more content", "More and more content", "More and more content",
"More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content",
"More and more content" };
final JList listBottom = new JList(listB);
listBottom.setVisibleRowCount(12);
JScrollPane scrollPaneB = new JScrollPane(listBottom);
panelBottom.add(scrollPaneB);
scrollPaneB.setViewportView(listBottom);
scrollPaneB.setBorder(BorderFactory.createTitledBorder("Bottom Panel"));
scrollPaneB.setVisible(true);
//listBottom.setVisible(true);
listBottom.setBorder(BorderFactory.createLoweredBevelBorder());
// Create Top Right Action Listener
listBottom.addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent arg0) {
Selection selectionB = (Selection)listBottom.getSelectedValue();
textField.setText(selectionB.getContents());
}
});
Комментарии:
1. Мне любопытно, как вы реализовали функциональность клавиши ввода?
Ответ №1:
Вы просто добавляете прослушиватель, выбранный мышью, и проверяете, нажимает ли мышь на JList.
String[] listB = { "Some content on the right panel", "More content", "Some more content", "More and more content", "More and more content", "More and more content",
"More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content", "More and more content",
"More and more content" };
final JList listBottom = new JList(listB);
....//other code
listBottom.addMouseListener(new MouseAdapter(){
//Called when you click the JList
public void mouseClicked(MouseEvent e) {
JList list = (JList)e.getSource();
//Makes sure it only registers for single clicks(always registers even on double clicks, just registers twice.)
if (e.getClickCount() == 1) {
//Gets the point where you clicked and returns the index of the element at that point
int index = list.locationToIndex(e.getPoint());
//Makes sure that where you clicked was an element and that it is a String(We know it will be but its better to be safe)
if(list.getModel().getElementAt(index) != nullamp;amp;list.getModel().getElementAt(index) instanceof String){
//Populates your textField with the element at this index
textField.setText(list.getModel().getElementAt(index));
}
}
}
});
Надеюсь, это поможет!
Ответ №2:
Я пытаюсь заполнить JTextArea из JList, когда пользователь дважды щелкает по элементу.
При разработке графического интерфейса пользователь должен иметь возможность использовать мышь или клавиатуру для вызова действия над компонентом.
Проверьте действие списка. Он будет вызывать, Action
когда вы double click
используете Enter
ключ. Все, что вам нужно сделать, это создать Action
.