use*_*646 7 listview javafx selection
JavaFX中是否有一个选项可以取消选择ListViewvia鼠标中项目的可能性?
我想在ListView没有任何用户交互的情况下显示一个.
Jur*_*gen 14
你也可以尝试:
listview.setMouseTransparent( true );
listView.setFocusTraversable( false );
Run Code Online (Sandbox Code Playgroud)
Mor*_*hai 10
将列表设置为鼠标透明也将阻止具有可交互的自定义列表单元格的单元格接受焦点.
理想的解决方案是使用特殊的选择模型:
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.MultipleSelectionModel;
public class NoSelectionModel<T> extends MultipleSelectionModel<T> {
@Override
public ObservableList<Integer> getSelectedIndices() {
return FXCollections.emptyObservableList();
}
@Override
public ObservableList<T> getSelectedItems() {
return FXCollections.emptyObservableList();
}
@Override
public void selectIndices(int index, int... indices) {
}
@Override
public void selectAll() {
}
@Override
public void selectFirst() {
}
@Override
public void selectLast() {
}
@Override
public void clearAndSelect(int index) {
}
@Override
public void select(int index) {
}
@Override
public void select(T obj) {
}
@Override
public void clearSelection(int index) {
}
@Override
public void clearSelection() {
}
@Override
public boolean isSelected(int index) {
return false;
}
@Override
public boolean isEmpty() {
return true;
}
@Override
public void selectPrevious() {
}
@Override
public void selectNext() {
}
}
Run Code Online (Sandbox Code Playgroud)
然后在列表视图中设置模型:
listView.setSelectionModel(new NoSelectionModel<MyType>());
Run Code Online (Sandbox Code Playgroud)
您可以使用事件处理程序阻止列表视图鼠标单击购买
listview.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println(">> Mouse Clicked");
event.consume();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7965 次 |
| 最近记录: |