ListSelectionListener в JTable печатает значение дважды [дубликат]

Вы не можете сделать две изменяемые ссылки на одни и те же данные. Это явно запрещается средством проверки заимствований, чтобы предотвратить одновременные изменения. Однако вы можете обойти проверку чеков с помощью блоков unsafe.

Хотя в вашем случае v[0] и v[1] явно являются отдельными кусками, это не выдерживает серьезного внимания. Что, если v - это какая-то карта, называемая NullMap, которая отображает все элементы в одно поле? Как известно компилятору в Vec операциях v[0];v[1]; безопасно, но в NullMap нет?


Если вы пытаетесь поменять два элемента массива, почему бы не пойти slice::swap ?

fn main() {
    let mut v = vec![1, 2, 3];
    v.swap(0,1);
    println!("{:?}",v);
}

Также v должен быть mut, потому что вы меняете вектор. Неизменяемая версия будет клонировать и выполнять обмен на нее.

18
задан mKorbel 19 October 2012 в 14:42
поделиться

2 ответа

e.getValueIsAdjusting - это то, что вы ищете. Как указано в javadoc этого метода

Возвращает, является ли это одним в серии из нескольких событий, где изменения все еще выполняются

26
ответ дан Robin 21 August 2018 в 05:24
поделиться
  • 1
    Поэтому я все равно не сходил с ума. Спасибо за ответ. – Michael 15 October 2015 в 15:37

Это обычный способ, вы должны фильтровать с помощью метода getValueIsAdjusting ()

6
ответ дан Aubin 21 August 2018 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: