我有一个基本的文本编辑器,可以设置文档样式(粗体,下划线,斜体,下划线,对齐左/右/中心,颜色,字体大小/系列),这一切都很好.我遇到的问题是我希望样式将我的按钮和盒子设置为插入符号所在的正确样式.
比方说,我有字符串
快速的棕色狐狸 跳过懒狗
当我快速点击你和我之间时,我想要切换我的斜体按钮,以指示插入符号的文本具有斜体样式.
我正在使用JTextPane来保存文本,并使用StyledEditorKit进行样式设置.
谢谢.
我在SO上找到了以下代码来获取一个可信任div的光标位置,但它总是返回0.
应该检索位置的函数:
new function($) {
$.fn.getCursorPosition = function() {
var pos = 0;
var input = $(this).get(0);
// IE Support
if (document.selection) {
input.focus();
var sel = document.selection.createRange();
var selLen = document.selection.createRange().text.length;
sel.moveStart('character', -input.value.length);
pos = sel.text.length - selLen;
}
// Firefox support
else if (input.selectionStart || input.selectionStart == '0')
pos = input.selectionStart;
return pos;
}
} (jQuery);
Run Code Online (Sandbox Code Playgroud)
我用来测试它的代码:
$('div.MESSAGE_OF_DAY').keyup(function() {
alert($(this).getCursorPosition()); // always returns 0???
});
Run Code Online (Sandbox Code Playgroud)
如果重要的话,我正在使用Chrome(8.0.552.215).
我正在使用一个正则表达式字符串,其中包含一个克拉(^)符号.Java中有没有办法删除这些符号?以下是我尝试过的几种方法:
string = "some^string";
string = string.replaceAll("\\^", "");
string = string.replaceAll(Pattern.quote("\\^"), "");
string = string.replaceAll(Pattern.quote("\u2038"), "");
Run Code Online (Sandbox Code Playgroud)
其中没有一个有效.我错过了什么?
我需要覆盖类中的插入符行为,但我不确定哪个操作符重载适用于它.例如:
class A:
def __init__(self, f):
self.f = f
def __caret__(self, other):
return self.f^other.f
print A(1)^A(2)
Run Code Online (Sandbox Code Playgroud)
此代码错误:
TypeError: unsupported operand type(s) for ^: 'instance' and 'instance'
Run Code Online (Sandbox Code Playgroud)
我如何构建类以便控制行为?
在Windows 7的cmd中,我知道%〜dp0给出了批处理文件的文件夹路径,如 如何使用CMD从文件路径获取文件夹路径中所述
但是,如果路径中至少有一个插入符号(^),则此操作无效。例如,C:\ one ^ two ^^ three ^^^ fourfour ^^^^ carets \中的一批
echo %~dp0
Run Code Online (Sandbox Code Playgroud)
给
C:\onetwo^three^four^^carets\
Run Code Online (Sandbox Code Playgroud)
如何逃脱插入符号?
我正在尝试编写一个函数,该函数将keyup在contentEditable div中为插入符号前面的元素提供引用.
如果插入符号位于文本节点中,则该函数应返回null.如果插入符号位于contentEditable的开头,则该函数应返回null.
但是如果插入符号位于文本节点的开头,并且此文本节点前面紧跟一个元素(如Span),则该函数应返回对此元素的引用.
并且,如果插入符号位于两个Html元素之间(例如,在两个Spans之间),则它应该返回对插入符号之前的元素的引用,即两个元素中的第一个.
如果有两个或多个文本节点紧跟在一起,则应将它们视为单个文本节点.
我已经开始拼凑一些东西了.我正在考虑使用范围偏移来计算我到文本节点的距离,但感觉过于复杂.我不禁想到有一些我没想到的明显的东西.
我想知道如何在JTextArea中更改位置标记(闪烁的I)的颜色.我想这样做的原因是因为我将使用带有黑色背景和绿色文本(旧终端样式)的GUI.我想要一个白色或绿色的位置标记.谢谢!
我正在编写一个类似十六进制编辑器的视图,它由两个JTextComponents(十六进制和ASCII)组成.我想同步两个视图之间的选择,所以我为这两个组件实现了一个CaretListener.这适用于响应用户长按,拖动和释放鼠标的选择事件.当用户释放鼠标时,组件会收到caretUpdate.
当用户按下鼠标并拖动鼠标而不释放时,组件如何接收增量的caretUpdate事件?
我怎样才能float使我的所有插入符号都正确?
我按照这个答案在我的菜单中制作子插入符号.
但它显示了插入符号,inline-block并且我的子插入符号看起来不对齐.

我希望子插入符号像这样对齐,

可能吗?
CSS,
.caret-right {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-left: 5px solid;
border-left-color:#999999;
border-bottom: 5px solid transparent;
border-top: 5px solid transparent;
}
Run Code Online (Sandbox Code Playgroud)
HTML,
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Category <b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="el-dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown" style="border:1px solid red;">News - a very long title <b class="caret-right"></b></a>
<ul class="dropdown-menu">
<li><a href="#/3">Add</a></li>
<li><a href="#/4">Manage</a></li>
</ul>
</li>
<li class="el-dropdown-submenu"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Blog <b class="caret-right"></b></a> …Run Code Online (Sandbox Code Playgroud) 我想要下面的方法来替换a中的文本选择,JTextField并用一些输入替换它String.我的问题是,如果我选择了多个单个字符JTextField,则插入位置会向前跳过.
如何确保插入位置保持在正确的位置?
private void addStringAtCaretPos(String c) {
final int caretPosition = inputTextField.getCaretPosition();
inputTextField.replaceSelection(c);
inputTextField.requestFocus();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
inputTextField.setCaretPosition(caretPosition + 1);
}
});
}
Run Code Online (Sandbox Code Playgroud)