Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在特定标记处显示弹出窗口_Java_Swing_Jtextarea - Fatal编程技术网

Java 在特定标记处显示弹出窗口

Java 在特定标记处显示弹出窗口,java,swing,jtextarea,Java,Swing,Jtextarea,显示弹出窗口 我想显示弹出窗口,显示所有可能的值,如果一个特定的令牌是不正确的。键入空格键时会触发此事件。它很好用。一个错误是,无论光标在哪一行,弹出窗口都会弹出,我只想将弹出窗口显示在正确的令牌所在的位置 String str = Australia Canberra Dollar String tokens = str.split("\\s+"); private void editorTextAreaKeyTyped(java.awt.event.KeyEvent evt

显示弹出窗口

我想显示弹出窗口,显示所有可能的值,如果一个特定的令牌是不正确的。键入空格键时会触发此事件。它很好用。一个错误是,无论光标在哪一行,弹出窗口都会弹出,我只想将弹出窗口显示在正确的令牌所在的位置

  String str = Australia Canberra Dollar  
  String tokens = str.split("\\s+");

  private void editorTextAreaKeyTyped(java.awt.event.KeyEvent evt) {
     if ((evt.getKeyChar() == KeyEvent.VK_SPACE)) {
        if(!tokens[0].equals("Australia")){
          showPopup(editor, menu);
      }
     }
   }


 public void showPopUpMenu(JTextArea jTextArea, List menuItems) {

    JPopupMenu popup = new JPopupMenu();
    Point point = getPoint(jTextArea);
    Caret caret = getCaret(jTextArea);
    JMenuItem menuItem;

    ActionListener al = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {                
            jTextArea.insert(e.getActionCommand(), jTextArea.getCaret().getDot());
        }
    };

    for (Object mi : menuItems) {
        menuItem = new JMenuItem(mi.toString());
        menuItem.addActionListener(al);
        popup.add(menuItem);
    }
    popup.show(jTextArea, point.x, point.y);
}

我想您可以使用
viewToModel()
modelToView()
来获取jtext区域内的点,您希望弹出窗口出现在那里。希望这能让我的话更清楚。问题是不同的,问题在于字符串。如果字符串有特定位置,我可以在特定位置调用弹出窗口。它是使用[\\s+]标记的,因此很难计算标记开始和结束的点。@Gagandeep Bali正确地建议了
JTextComponent
方法,可用于在文档偏移和视图坐标之间进行转换。我将听从他的回答,那段代码不会编译(即使它不是一个片段)。为了更快地获得更好的帮助,请发布一个。我想您可以使用
viewToModel()
modelToView()
获取jtext区域内的点,您希望弹出窗口。希望这能让我的话更清楚。问题是不同的,问题在于字符串。如果字符串有特定位置,我可以在特定位置调用弹出窗口。它是使用[\\s+]标记的,因此很难计算标记开始和结束的点。@Gagandeep Bali正确地建议了
JTextComponent
方法,可用于在文档偏移和视图坐标之间进行转换。我将听从他的回答,那段代码不会编译(即使它不是一个片段)。为了更快地获得更好的帮助,请发布一个。