Вы можете следовать рекомендациям в PEP 3101 и использовать подкласс Formatter:
import string
class BlankFormatter(string.Formatter):
def __init__(self, default=''):
self.default=default
def get_value(self, key, args, kwds):
if isinstance(key, str):
return kwds.get(key, self.default)
else:
return string.Formatter.get_value(key, args, kwds)
kwargs = {"name": "mark", "adj": "mad"}
fmt=BlankFormatter()
print fmt.format("My name is {name} and I'm really {adj}.", **kwargs)
# My name is mark and I'm really mad.
print fmt.format("My name is {name} and I'm really {adjective}.", **kwargs)
# My name is mark and I'm really .
Начиная с Python 3.2 вы можете использовать .format_map в качестве альтернативы:
class Default(dict):
def __missing__(self, key):
return '{'+key+'}'
kwargs = {"name": "mark"}
print("My name is {name} and I'm really {adjective}.".format_map(Default(kwargs)))
, который печатает:
My name is mark and I'm really {adjective}.
Используйте ListSelectionListener
:
JList list = new JList(...);
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (!evt.getValueIsAdjusting()) {
// code here
}
}
});
Почему бы вам не поставить ListSelectionListener
на JList
и добавить к нему свой код.
Предполагаю, что вы уже знаете, как создавать слушатели на JButtons на основе вашего вопроса, поэтому вам просто нужно настроить его, чтобы создать ListSelectionListener
вместо этого, а затем назначить слушателя вашему JList
используя jlist.addListSelectionListener(myListener);
Здесь есть хороший учебник здесь , который должен вас запустить или обратитесь к документации
You должен быть нацелен на что-то вроде этого ...
jlist.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent event) {
if (!event.getValueIsAdjusting()){
JList source = (JList)event.getSource();
String selected = source.getSelectedValue().toString();
}
}
});