Или вы можете очистить входной буфер, чтобы прочитать строку
fflush (stdin)
blockquote>, она определена в заголовке stdio.h .
Этот код работает ..
cout << "Enter the number: "; int number; cin >> number; cout << "Enter names: "; string names; fflush(stdin); //FLUSHING STDIN getline(cin, names);
Вынутый прямо из JTree API
// If you are interested in detecting either double-click events or when a user clicks on a node, regardless of whether or not it was selected, we recommend you do the following:
final JTree tree = ...;
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
if(e.getClickCount() == 1) {
mySingleClick(selRow, selPath);
}
else if(e.getClickCount() == 2) {
myDoubleClick(selRow, selPath);
}
}
}
};
tree.addMouseListener(ml);
, Конечно, необходимо изменить его немного для щелчка правой кнопкой вместо, щелкают левой кнопкой
Renderer - это только временная «резиновая печать», поэтому добавление входного прослушивателя в этом случае не будет особенно полезным. Редактор, как вы указали, появляется только после того, как вы сделали жест для редактирования. Итак, вы хотите добавить слушатель к JTree (при условии, что он не реализован как составной компонент).
Я думаю, что Вы делаете вещи путем тяжелее, чем они должны быть.
JTree имеет несколько "add_foo_Listener" методов на нем. Реализуйте один из тех (TreeSelectionListener озирается вокруг права), и затем у Вас есть в настоящее время выбираемый узел.
Реализация MouseListener так, чтобы можно было обнаружить событие щелчка правой кнопкой (и добавить его к JTree, начиная с JTree's Компонент), и затем у Вас должно быть все, что необходимо отправить контекстно-зависимое меню.
Выезд этот учебное руководство для получения дополнительной информации.
Спасибо всем. Я знал, что что-то не так, когда тратил столько усилий на реализацию простого всплывающего окна.
Сначала я отклонил эту мысль, потому что было странно прибегать к координатам x и y, чтобы найти искомый узел, но я думаю, что это способ сделать это.
// add MouseListener to tree
MouseAdapter ma = new MouseAdapter() {
private void myPopupEvent(MouseEvent e) {
int x = e.getX();
int y = e.getY();
JTree tree = (JTree)e.getSource();
TreePath path = tree.getPathForLocation(x, y);
if (path == null)
return;
tree.setSelectionPath(path);
My_Obj obj = (My_Obj)path.getLastPathComponent();
String label = "popup: " + obj.getTreeLabel();
JPopupMenu popup = new JPopupMenu();
popup.add(new JMenuItem(label));
popup.show(tree, x, y);
}
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) myPopupEvent(e);
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) myPopupEvent(e);
}
};
(...)
JTree tree = new JTree();
tree.addMouseListener(ma);