我已经在我正在处理的文本编辑器项目中创建了一个弹出列表作为自动完成功能,并且我面临着在文本点设置此弹出列表的位置的问题在JeditorPane组件中键入
这是我的代码(现在框架底部的列表打开):
private void showPopUpWindow() {
autoSuggestionPopUpWindow.getContentPane().add(suggestionsPanel);
autoSuggestionPopUpWindow.setMinimumSize(new Dimension(textField.getWidth(), 30));
autoSuggestionPopUpWindow.setSize(tW, tH);
autoSuggestionPopUpWindow.setVisible(true);
int windowX =0;
int windowY =0;
windowX = container.getX() + textField.getX() + 5;
if (suggestionsPanel.getHeight() > autoSuggestionPopUpWindow.getMinimumSize().height) {
windowY = container.getY() + textField.getY() + textField.getHeight() + autoSuggestionPopUpWindow.getMinimumSize().height;
} else {
windowY = container.getY() + textField.getY() + textField.getHeight() + autoSuggestionPopUpWindow.getHeight();
}
autoSuggestionPopUpWindow.setLocation(windowX, windowY);
autoSuggestionPopUpWindow.setMinimumSize(new Dimension(textField.getWidth(), 30));
autoSuggestionPopUpWindow.revalidate();
autoSuggestionPopUpWindow.repaint();
}
对象" autoSuggestionPopUpWindow"是JWindow类的实例
我怎么能找到这一点?
答案 0 :(得分:3)
不要使用JEditorPane。 JEditorPane最适合用于显示简单的HTML。
相反,我建议您使用JTextPane
表示格式化文本,或使用JTextArea
表示纯文本。
您可以根据插入符号的位置显示弹出窗口:
int offset = textComponent.getCaretPostion();
然后你得到一个Rectangle,它代表文本组件中插入符号的位置:
Rectangle location = textComponent.modelToView(offset);
然后您可以根据矩形设置窗口的位置:
window.setLocation(location.x, location.y + location.height);