我有一个包含两个组件的UI--一个JEditorPane和一个JComboBox。我的目标是能够在JEditorPane中键入一些内容,选择文本的一部分,并且当它仍然被选中时,在可编辑的JComboBox中键入和/或选择一个值。
这是一个文本编辑器类型的程序,我想在其中只更改编辑器窗格中选定文本的字体大小。字体大小来自“可编辑”组合框。为了澄清一下,我不是在问如何对文本应用样式,我是在问如何在组合框中选择一个值,而不丢失JeditorPane中的焦点/选择。
这是UI的代码,但我不确定从哪里开始处理焦点...
public static void main(String [] args)
{
JFrame frame = new JFrame();
JPanel contentPane = new JPanel();
JComboBox<String> combo = new JComboBox(new String [] {"Hello", "World"});
contentPane.add(combo);
JEditorPane editor = new JEditorPane();
contentPane.add(editor);
frame.setContentPane(contentPane);
frame.pack();
frame.setVisible(true);
}
我在问如何在组合框中选择一个值而不丢失JeditorPane中的焦点/选择。
当您从组合框中选择一个项目时,您不会丢失编辑器窗格中对文本的选择。所选内容仍然保留,但在编辑器窗格重新获得焦点之前不会对其进行绘制。
所以最简单的方法就是使用JMenuItem。阅读Swing教程中关于文本组件特性的一节,以获得这样做的示例。
@Override
public void actionPerformed(ActionEvent e)
{
Integer value = (Integer)comboBox.getSelectedItem();
Action action = new StyledEditorKit.FontSizeAction("Font size", value);
action.actionPerformed(null);
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class DefaultCaretTest extends JFrame
{
public DefaultCaretTest()
{
JTextField textField1 = new JTextField("Text Field1 ");
JTextField textField2 = new JTextField("Text Field2 ");
textField1.setCaret(new SelectionCaret());
textField2.setCaret(new SelectionCaret());
textField1.select(5, 11);
textField2.select(5, 11);
((DefaultCaret)textField2.getCaret()).setSelectionVisible(true);
add(textField1, BorderLayout.WEST);
add(textField2, BorderLayout.EAST);
}
static class SelectionCaret extends DefaultCaret
{
public SelectionCaret()
{
setBlinkRate( UIManager.getInt("TextField.caretBlinkRate") );
}
public void focusGained(FocusEvent e)
{
setVisible(true);
setSelectionVisible(true);
}
public void focusLost(FocusEvent e)
{
setVisible(false);
}
}
public static void main(String[] args)
{
DefaultCaretTest frame = new DefaultCaretTest();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
您还可以使用:
comboBox.setFocusable(false);
由于组合框不能获得焦点,焦点将保留在文本组件上,但这样做的问题是用户不能使用键盘从组合框中选择字体大小。正确的GUI设计总是允许用户使用键盘或鼠标执行操作。
我当前正在开发一个程序,允许您使用更改从中选定文本的颜色,但它仅在我使用光标运行时临时更改文本。 我想知道如何设置或更改它,以及
问题内容: 我想让可编辑JTables中的编辑器在开始编辑时选择单元格中的所有文本。我已经尝试了几件事,都是围绕从TableCellEditor.getTableCellEditorComponent方法返回的组件上调用JTextComponent.selectAll()进行的。我尝试过的所有方法均无济于事。 在最近的尝试中,我从Swing教程更改了SimpleTableDemo类,以使用自定义T
如何在JeditorPane中设置字体/粗体/斜体/下划线? 我试图创建一个简单的文档编辑器,但我只能弄清楚如何设置整个JEditor/JText窗格中的FONT/Bold/Italic/Whatever。 RTF是首选的,HTML也可以。
问题内容: 如何在JTextPane中轻松编辑所选文本的样式?似乎没有很多资源。即使您可以引导我获得大量有用的资源,我也将不胜感激。 另外,如何获得所选文本的当前样式?我试过了,但似乎没有用。 问题答案: 在此pastebin中查看以下代码: http://pbin.oogly.co.uk/listings/viewlistingdetail/d6fe483a52c52aa951ca15762ed
我正在android studio中使用java开发和应用程序,希望在RecyclerView函数中编辑文本。我该怎么做?
问题内容: 在JavaScript中,可以通过编程方式选择或元素中的文本。您可以使用来集中输入,然后使用来选择其内容。您甚至可以使用选择特定范围。 我的问题是:在元素中也有任何方法可以这样做吗? 我发现我可以这样做,可以将插入符号放入元素中,但是随后运行不起作用(也不行)。我在网上找不到任何有关它的信息,但也许我在寻找错误的信息… 顺便说一下,如果有什么不同,我只需要它在Google Chrome