下面列出了javax.swing.ListSelectionModel#SINGLE_SELECTION 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public Node storeToXML(Document doc) {
Object value = getValue();
int selectionMode = -1;
Object[] values = getEnumerationValues();
if (values[4].equals(value)) {
selectionMode = ListSelectionModel.SINGLE_SELECTION;
} else if (values[7].equals(value)) {
selectionMode = ListSelectionModel.SINGLE_INTERVAL_SELECTION;
} else if (values[10].equals(value)) {
selectionMode = ListSelectionModel.MULTIPLE_INTERVAL_SELECTION;
}
org.w3c.dom.Element el = null;
el = doc.createElement(XML_TABLE_SELECTION_MODEL);
el.setAttribute(ATTR_SELECTION_MODE, Integer.toString(selectionMode));
return el;
}
public void run() {
boolean multisel = (list.getSelectionMode() != ListSelectionModel.SINGLE_SELECTION);
int i = (multisel ? list.getLeadSelectionIndex() : list.getSelectedIndex());
if (i < 0) {
return;
}
Point p = list.indexToLocation(i);
if (p == null) {
return;
}
createPopup(p.x, p.y, false);
}
/**
* Check if selection of the nodes could break
* the selection mode set in the ListSelectionModel.
* @param nodes the nodes for selection
* @return true if the selection mode is broken
*/
private boolean isSelectionModeBroken(Node[] nodes) {
// if nodes are empty or single then everthing is ok
// or if discontiguous selection then everthing ok
if (nodes.length <= 1 || table.getSelectionModel().getSelectionMode() ==
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) {
return false;
}
// if many nodes
// breaks single selection mode
if (table.getSelectionModel().getSelectionMode() ==
ListSelectionModel.SINGLE_SELECTION) {
return true;
}
// check the contiguous selection mode
// check selection's rows
// all is ok
return false;
}
/**
* Check if selection of the nodes could break
* the selection mode set in the ListSelectionModel.
* @param nodes the nodes for selection
* @return true if the selection mode is broken
*/
private boolean isSelectionModeBroken(Node[] nodes) {
// if nodes are empty or single then everthing is ok
// or if discontiguous selection then everthing ok
if (nodes.length <= 1 || outline.getSelectionModel().getSelectionMode() ==
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) {
return false;
}
// if many nodes
// breaks single selection mode
if (outline.getSelectionModel().getSelectionMode() ==
ListSelectionModel.SINGLE_SELECTION) {
return true;
}
// check the contiguous selection mode
// check selection's rows
// all is ok
return false;
}
/**
* Show popup menu from actions provided by node at given index (if any).
*
* @param rowIndex
* @param location
*/
void showPopupMenuAt(int rowIndex, Point location) {
TreeListNode node = (TreeListNode) getModel().getElementAt(rowIndex);
boolean popupForSelected = false;
if (getSelectionMode() != ListSelectionModel.SINGLE_SELECTION) {
popupForSelected = isPopupForSelected(node);
}
if (!popupForSelected) {
setSelectedIndex(rowIndex);
}
Action[] actions = node.getPopupActions();
if (null == actions || actions.length == 0) {
return;
}
JPopupMenu popup = Utilities.actionsToPopup(actions, this);
popup.show(this, location.x, location.y);
}
ContactListView(final View view, Model model) {
super(view,
new FlyweightContactItem(),
new FlyweightContactItem(),
ListSelectionModel.SINGLE_SELECTION,
true,
true);
mModel = model;
// actions triggered by mouse events
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
Contact contact = ContactListView.this.getSelectedValue().orElse(null);
if (contact != null)
mView.showChat(contact);
}
}
});
this.updateOnEDT(null);
}
@Override
public void readFromXML(Node element) throws IOException {
org.w3c.dom.NamedNodeMap attributes = element.getAttributes();
Object[] values = getEnumerationValues();
Object value;
Node node = attributes.getNamedItem(ATTR_SELECTION_MODE);
int selectionMode = Integer.valueOf(node.getNodeValue()).intValue();
switch (selectionMode) {
case ListSelectionModel.SINGLE_SELECTION: value = values[4]; break;
case ListSelectionModel.SINGLE_INTERVAL_SELECTION: value = values[7]; break;
case ListSelectionModel.MULTIPLE_INTERVAL_SELECTION: value = values[10]; break;
default: value = values[1]; break;
}
setValue(value);
}
/**
* Retourne l'objet sélectionné.
*
* @return TypeValue
* @see #setSelectedObject
*/
public T getSelectedObject() {
if (getSelectionModel().getSelectionMode() != ListSelectionModel.SINGLE_SELECTION) {
throw new IllegalStateException(
"Appel à getSelectedObject() invalide pour une table en sélection multiple");
}
return getObjectAt(getSelectedRow());
}
ChatListView(final View view, ChatList chatList) {
super(view,
new FlyweightChatItem(),
new FlyweightChatItem(),
ListSelectionModel.SINGLE_SELECTION,
false,
true);
mChatList = chatList;
this.updateOnEDT(null);
}
@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
// toggle selection with normal click
boolean newToggle =
this.getSelectionModel().getSelectionMode() != ListSelectionModel.SINGLE_SELECTION
&& this.getSelectedRowCount() == 1
&& this.getSelectedRow() == rowIndex || toggle;
super.changeSelection(rowIndex, columnIndex, newToggle, extend);
}
public TableSelectionModel() {
super.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (toolController != null) {
toolController.setSelectedTextureIndex(textureTable.getSelectedRow());
}
}
});
}
public ListBoxBuilder<T> singleSelectionMode() {
this.selectionMode = ListSelectionModel.SINGLE_SELECTION;
return this;
}
protected void saveSelection() {
int sel = getSelectionModel().getSelectionMode();
selection = sel == ListSelectionModel.SINGLE_SELECTION ?
getSelectedValue(mainColumn) : getSelectedValues(mainColumn).toArray();
}
protected void saveSelection() {
int sel = getSelectionModel().getSelectionMode();
selection = sel == ListSelectionModel.SINGLE_SELECTION ?
getSelectedValue(mainColumn) : getSelectedValues(mainColumn).toArray();
}
public ServerContextTableModel(final Column[] columns) {
this(columns, ListSelectionModel.SINGLE_SELECTION);
}