我可以在没有任何 HTML 问题的情况下解析 JTextPane 的内容:
textPane = new JTextPane();
textPane.setContentType("text/html");
textPane.setText(<b>Hello!</b>);
// ...
setVisible(true);
Run Code Online (Sandbox Code Playgroud)
这导致
你好!
但是每当我尝试将字符串附加到 textPane 时,使用
styledDoc = (StyledDocument) textPane.getStyledDocument();
styledDoc.insertString(styledDoc .getLength(), <b>Goodbye!</b>, null );
Run Code Online (Sandbox Code Playgroud)
(如在这个问题中所见),我的输出是
你好!
<b>Goodbye!</b>
(没有空格) - 所以 html 格式被跳过。
如何将字符串附加到我的 JTextPane 对象并保留添加部分的 HTML 格式?
在聊天应用程序中,我希望用户能够从他/她的剪贴板发送图像.为此,我想抓住任何CTRL+V
键盘输入.由于默认情况下应该可以粘贴文本,因此不能覆盖原始的ctrl + v-function(粘贴文本).
我看到有两种方法,其中一种方法对我无效:
1st:取自官方Java文档:KEY LISTENER
editorPane.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent e) {
e.getKeyChar()
// when I press ctrl+v, ^ this is falsely a white square character, looks like (U+25A1). Plain v without ctrl does work.
e.getKeyCode()
// ^ this is falsely 0
// (e.getModifiersEx() correctly returns InputEvent.CTRL_DOWN_MASK)
}
Run Code Online (Sandbox Code Playgroud)
第二名:关键约束力
InputMap iMap = editorPane.getInputMap(condition);
ActionMap aMap = editorPane.getActionMap();
iMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK), "ctrlV");
aMap.put("ctrlV", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// …
Run Code Online (Sandbox Code Playgroud) 我正在为 X11 使用 Crystal 绑定,典型用法如下所示:
loop do
event = display.next_event # <- blocking!
# do stuff with event
end
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我现在无法并行执行任何操作,因为它next_event
是本机 C 代码,因此永远不会产生结果。
xlib 的 NextEvent 总是阻塞的,在 C 中也是如此。有一个关于它的线程提供了可能的替代方案,但轮询比 更慢并且对 CPU 的要求更高next_event
,所以我想坚持使用阻塞调用。我是否必须将其放入单独的操作系统线程中?-Dpreview_mt
实际上解决了这个问题,但这是一个实验性标志,并使所有并发线程化,这是不必要的(编辑:刚刚发现,这不是真的,有spawn same_thread: true do
语法)。我有什么选择?
编辑:我刚刚发现此主题中对此进行了更详细的讨论,值得阅读该主题。如果您能以某种方式获得 FD,也可以解决此FileDescriptor
问题。wait_readable
来自/sf/answers/653389271/:让我们假设一个以编程方式切换的基本元素。这可能意味着将显示设置为无/阻止或完全删除/插入元素。
$('#toggle').click(() => $('#square').toggle());
Run Code Online (Sandbox Code Playgroud)
#square {
width: 50px;
height: 50px;
background: lightblue;
}
.animated {
animation: fade-in 1s;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="toggle">toggle</button>
<div id="square" class="animated"></div>
Run Code Online (Sandbox Code Playgroud)
使用简单的animation
,您可以为元素出现时添加过渡效果。当元素消失时,你如何做同样的事情?
我不想添加更多的类,没有:hover
,也没有更多的 Javascript 代码。在许多 JS 框架中,您可以轻松地显示/隐藏元素:.toggle()
(JQuery,同上)、ng-if
(AngularJS)、*ngIf
(Angular)、条件渲染(React)、v-if
(VueJS)等等。使用上述解决方案,一个简单的class="animated"
就足以让它与自定义动画一起出现。所以我在这里寻找淡出动画的纯 CSS 解决方案,假设这是一个标准问题。
java ×2
append ×1
crystal-lang ×1
css ×1
ctrl ×1
formatting ×1
html ×1
jtextpane ×1
key-bindings ×1
keylistener ×1
swing ×1