标签: jtextcomponent

如何更改JTextArea中的文本颜色?

我需要知道如何做到这一点:

让我们说:我有一个JTextArea像这样的代码:

LOAD R1, 1
DEC R1
STORE M, R1
ADD R4, R1,8
Run Code Online (Sandbox Code Playgroud)

我想改变的颜色LOAD,DEC,STOREADD以颜色为蓝色 R1,R4以色绿 M到红号橙色

如何更改此文字的颜色?这些文本来自记事本或可以直接键入文本区域.

java swing colors jtextarea jtextcomponent

30
推荐指数
3
解决办法
8万
查看次数

在JTextArea中,插入位置已关闭

我将JTextArea添加到具有布局管理器的组件,该布局管理器尊重首选大小和位置.但是,在输入几个"宽"字母(例如'm')后,显示的插入符号在JTextArea中的位置会变得错误:

在此输入图像描述

这是在输入左边的所有字母后,实际的插入位置在'd'之后.在这种情况下,JTextArea比文本宽得多.不确定它是否相关,但使用的字体是Arial,大小11,普通样式,并且在将JTextArea添加到父容器之前正在设置.可能导致这种情况的任何想法?

java swing jtextcomponent

13
推荐指数
1
解决办法
727
查看次数

如何创建具有指定宽度的JTextArea以及显示所有文本所需的最小高度?

在我可以找到的所有使用a的例子中JTextArea,高度和宽度在构造之前是已知的JTextArea,如果JTextArea需要更多高度,那么它被放在a中JScrollPane.显然,高度JTextArea取决于宽度和文本内容.

现在,我的情况要求我不使用a JScrollPane,而是JTextArea要足够高以显示所有文本.当我创建时JTextArea,我知道文本内容以及它必须使用的宽度; 我不知道高度 - 我希望在不切断任何文本的情况下尽可能小.这似乎很难实现.

作为旁注,JTextArea将添加到JPanel没有布局管理器的 - 它使用基于添加的组件的首选大小的绝对定位.这要求我JTextArea将返回正确的尺寸getPreferredSize().正确的尺寸应该是我在构造时提供的宽度,以及显示具有所提供宽度的所有文本所需的最小高度.

我发现了一些类似的线程,讨论了有关的奇怪/错误JTextArea,有时通过pack()在父容器上调用两次来解决.这对我来说不是一个选择.我很想基本上创建我自己JTextArea的宽度和字符串,并根据宽度和字体设置计算必要的最小高度,但我想我会先考虑先花费时间才能做到这一点.

希望我的问题很明确.感谢大家的帮助!

java swing jtextarea jtextcomponent

12
推荐指数
2
解决办法
3万
查看次数

使JTextArea的部分不可编辑(不是整个JTextArea!)

我目前正在使用Swing的控制台窗口.它基于JTextArea,就像一个通用命令行.在一行中键入命令,然后按Enter键.在下一行中,显示输出,在该输出下,您可以编写下一个命令.

现在我想,你只能用你的命令编辑当前行.上面的所有行(旧命令和结果)都应该是不可编辑的.我怎样才能做到这一点?

java swing document jtextarea jtextcomponent

10
推荐指数
1
解决办法
4886
查看次数

如何在JFrame/JPanel中可视化控制台java

我使用Swing库创建了一个Java程序.现在我想将我的控制台输出重定向到JFrame或JPanel.

java console swing jtextarea jtextcomponent

9
推荐指数
2
解决办法
4万
查看次数

如何在JTextPane中将每个字符设置为不同的颜色/背景颜色?

我一直在寻找这个,到目前为止,我能够想出的是如何创建一个样式并将其应用于这样的角色:

StyledDocument doc = (StyledDocument) new DefaultStyledDocument();
JTextPane textpane = new JTextPane(doc);
textpane.setText("Test");
javax.swing.text.Style style = textpane.addStyle("Red", null);
StyleConstants.setForeground(style, Color.RED);
doc.setCharacterAttributes(0, 1, textpane.getStyle("Red"), true); 
Run Code Online (Sandbox Code Playgroud)

如果您的文档中只有少量样式并希望按名称存储它们,以便以后可以轻松应用它们,这将非常有用.在我的应用程序中,我希望能够为文本中的每个字符独立设置前景色(仅少数值之一)和背景色(灰度,许多不同的值).为此创建潜在的数百/数千种不同风格似乎是一种巨大的浪费.有没有办法设置这些属性,而不必每次都创建一个新的样式?如果我只需渲染文本会更容易,但我也需要使其可编辑.有没有办法做到这一点JTextPane,还是有另一个提供此功能的swing类?

java swing jtextpane jtextcomponent styleddocument

9
推荐指数
2
解决办法
1万
查看次数

如何确定哪些行在可滚动的JTextArea中可见?

如何确定第一个可见行的数量和当前在可滚动的JTextArea(JScrollPane中的JTextArea)中可见的行数?

java user-interface swing jtextcomponent

9
推荐指数
2
解决办法
2103
查看次数

如何在JTextArea中使用html标签

当我尝试使用更改JTextArea的颜色时

textArea.setText("<html> <font color=\"red\"> Hi </font></html>")
Run Code Online (Sandbox Code Playgroud)

,文本显示基本上是整个文本写在setText方法中.但类似的事情适用于JLabel,JButton等.

我怎样才能为JTextArea做到这一点?

html java swing jtextarea jtextcomponent

9
推荐指数
1
解决办法
2万
查看次数

为什么JTextComponent.setText(String)不对行结尾进行规范化?

最近我注意到Java文本组件使用换行符(LF \n,, 0x0A)来在内部表示和解释换行符.这让我感到非常惊讶,并提出我的假设,在System.getProperty('line.separator') 任何地方使用都是一个很好的做法,在问号下.

看来,无论何时处理文本组件,在使用提到的属性时都应该非常小心,因为如果使用JTextComponent.setText(String),最终可能会得到一个包含不可见换行符的组件(例如CR).除非可以将文本组件的内容保存到文件中,否则这可能看起来不那么重要.如果使用所有文本组件提供的方法将文本保存并打开到文件,则在重新打开文件时,隐藏的换行符会突然显示在组件中.原因似乎是该JTextComponent.read(...)方法进行了规范化.

那么为什么不JTextComponent.setText(String)规范化线路结束?或者是否允许在文本组件中修改文本的任何其他方法?System.getProperty('line.separator')处理文本组件时是否使用了良好的做法?这是一个好习惯吗?

一些代码将这个问题放到透视中:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TextAreaTest extends JFrame {

    private JTextArea jtaInput;
    private JScrollPane jscpInput;
    private JButton jbSaveAndReopen;

    public TextAreaTest() { …
Run Code Online (Sandbox Code Playgroud)

java swing jtextcomponent

9
推荐指数
1
解决办法
410
查看次数

为什么这个字体在Java中如此之大?

我正在尝试使用OpenDyslexic作为Swing应用程序中的字体选项.但令人惊讶的是,OpenDyslexic看起来比同一点大小的任何其他字体大得多,即使它在其他应用程序中看起来通常很大.我尝试了一些其他OpenType字体,它们看起来并不特别大或小.为什么OpenDyslexic在Java中如此之大,如何让Java正常大小以便我不需要特殊情况下OpenDyslexic的大小?

在所有操作系统上的Oracle JRE(我试过1.7.0_11,1.7.0_15和最新的1.7.0_21)上,当Java加载字体文件时,字体太大了Font.createFont.但是,当我字体安装到操作系统中时,所有3个平台上的行为都不同:

  • 在Linux中,安装字体~/.fonts没有用.在安装字体之前和安装后,屏幕截图看起来一样.
  • 在Windows中,安装字体会修复字体字形,但字体间距仍然太大!见下面的截图.
  • 在OS X中,安装字体修复了它!它看起来像OS X上的普通大小的字体.

更新:有趣的是,OpenJDK(Linux中的7u21 Ubuntu软件包和OS X上的obuildfactory构建版本)都没有出现这个bug.OpenFDK上的15pt OpenDyslexic'm'应该是15px宽,无论是从文件创建字体还是由操作系统处理字体时都是如此.该错误发布在最新的Oracle JRE中,但不在最新的OpenJDK中.

这是我的示例程序.请注意,要尝试它,您需要将OpenDyslexic文件放入资源/.或者,将OpenDyslexic安装到您的系统中并取出registerFonts()呼叫.

SansSerif是正常大小 OpenDyslexic在相同的点大小是巨大的 在Windows上安装OpenDyslexic后,它看起来很愚蠢 在OS X上安装字体后:完美!

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.GraphicsEnvironment;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;

import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;

public class FontFrame …
Run Code Online (Sandbox Code Playgroud)

java fonts swing jtextcomponent letter-spacing

8
推荐指数
1
解决办法
1642
查看次数