Tag: jtextarea

使用JTextArea模拟文本控制台

我的目标是在Java中获得类似控制台的行为组件,不一定在JTextArea中,但这首先尝试是合乎逻辑的。 输出很简单,使用JTextArea提供的方法,但输入是另一回事。 我想拦截输入,并按行动 – 逐个字符。 我发现了一些关于使用DocumentListener进行模糊关联的示例,但它似乎不允许我轻松检查刚刚输入的内容,这就是我需要决定如何对其进行操作的内容。 我正确地谈到这个吗? 有更好的方法吗? 我附上我的应用程序代码的相关部分。 public class MyFrame extends JFrame { public MyFrame() { Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=new Dimension((int)(screenSize.width/2),(int)(screenSize.height/2)); int x=(int)(frameSize.width/2); int y=(int)(frameSize.height/2); setBounds(x,y,frameSize.width,frameSize.height); console = new JTextArea(“”,25,80); console.setLineWrap(true); console.setFont(new Font(“Monospaced”,Font.PLAIN,15)); console.setBackground(Color.BLACK); console.setForeground(Color.LIGHT_GRAY); console.getDocument().addDocumentListener(new MyDocumentListener()); this.add(console); } JTextArea console; } class MyDocumentListener implements DocumentListener { public void insertUpdate(DocumentEvent e) { textChanged(“inserted […]

JTextArea中的行

有没有可靠的方法来计算字符串在JTextArea中如何划分成行? 我有一个固定宽度的JTextArea,当它被填充时,会添加一个新行并且它会垂直展开。 现在,我需要确切知道哪一行是哪一行。 我可以使用字体指标添加单个字符宽度,但我不知道这是否可靠,或者是否有更好的方法。 字体指标“技巧”是唯一的方法吗?

如何使JTextArea粘贴到窗口

你好我想让这个TextArea坚持使用鼠标调整窗口大小,就像下按钮一样。 这是完全没有错误的代码,请一目了然。 import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.LayoutManager; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Rozklady extends JFrame { public Rozklady() { super(); } public void createGUI(){ setPreferredSize(new Dimension(400,150)); JPanel jp = new JPanel(); […]

从特定单词中删除突出显示 – Java

我想构建一个示例以从与我的应用的filter匹配的单词中删除高亮显示。 因此,我基于以下示例: public void removeHighlights(JTextComponent jTextArea) { Highlighter hilite = jTextArea.getHighlighter(); Highlighter.Highlight[] hilites = hilite.getHighlights(); for (int i = 0; i < hilites.length; i++) { if (hilites[i].getPainter() instanceof TextHighLighter) { hilite.removeHighlight(hilites[i]); } } } 此示例适用于删除文本区域的所有高亮显示。 例如,如果我有三个选中的单词而我取消选中一个框,则所有filter都将被删除,我只想删除未选中单词的高亮显示。是否有一种简单的方法来检查哪个单词与filter匹配? 或者我需要手动完成吗? 直到现在我才发现我的研究没什么成功的 提前致谢 最终编辑: 基于@camickr回答的逻辑为我工作: public void removeHighlights(JTextComponent jTextArea, String turnLightOff) { Highlighter hilite = jTextArea.getHighlighter(); Highlighter.Highlight[] hilites = […]

从不同的类写入jTextArea

只是想知道是否可以从一个单独的类附加到一个类中的jTextArea? 我基本上有一个简单的类,它不断运行计算,我想在我自己的类中创建的GUI上查看输出。 程序通过System.out.println执行正常,但我想在我的textarea上查看它。 非常感谢任何指导。 更新 – 以下代码是我正在运行的。 有问题的区域如下(这是一个相当大的类的方法): System.out.println(“From Server:” + sentenceFromServer); 我希望将此输出写入单独的jTextArea,该jTextArea位于下面的类之下的另一个类中。 客户类 public void run() { SocketForm form = new SocketForm(); //File file=null; long startTime; // Starting time of program, in milliseconds. long endTime; // Time when computations are done, in milliseconds. double time; System.out.println(“Variables Set”); String serverName = “localhost”; try { //if […]

检测JTextArea中的文本选择

我有一个JTextArea并且我正在检测是否有任何文本是选择,如果没有,那么两个菜单项是灰色的。 我遇到的问题是,当我编译并打开应用程序时,我必须首先单击JTextArea,然后菜单项显示为灰色,如果我不这样做,即使没有选择文本也不会。 我正在使用以下插入符号监听器。 textArea.addCaretListener(new CaretListener() { @Override public void caretUpdate(CaretEvent arg0) { int dot = arg0.getDot(); int mark = arg0.getMark(); if (dot == mark) { copy2.setEnabled(false); cut1.setEnabled(false); } else{ cut1.setEnabled(true); copy2.setEnabled(true); } } });

将多行JTextArea写入txt文件

所以我有一个用于用户输入的JTextArea ,然后当他们点击一个按钮将它写入文本文件时,我将setLineWrap和setWrapStyleWord设置为JTextArea true 。 我想写文本文件中文本框中显示的确切方式。 我试图在String上执行replace(“\n”, System.getProperty(“line.separator”)) ,其中包含JTextArea的内容,但是只有当用户在键入输入时实际点击返回键时,但如果用户只是一直打字并点击一行的末尾,使其跳转到它下面的一行,则replace不起作用。 我也试过使用一个StringBuffer ,我计算了在线上适合多少个字符,然后在每一行的末尾运行一个for loop inserting新行,所以对于第一行,我将它添加到位置90 ,第二行添加到180 ,第270 ,依此类推。 但我很快就意识到这并不适用于所有情况,因为有些字符比其他字符小,例如你可以在一行上比p更适合j 。 我想做的就是找出计算一行结束的方法,以便知道在哪里insert新行,但我也对其他建议持开放态度。 谢谢。 如果你认为看到我的一些代码就会有所帮助。 更新而不是实现代码来执行此操作,我与那些将成为使用此程序的唯一人员之一的人交谈,并且他对常规记事本格式很好并且我没有意识到它,但只要他已经检查了wordWrap然后记事本格式设置将消除他必须使用侧滚动以读取整行,感谢您的输入

如何在追加后自动向下滚动JTextArea?

我用JTextArea创建了一个JFrame。 我想在每次追加后自动向下滚动textarea。 我该如何管理它? 我试过log.setCaretPosition(log.getDocument().getLength()); 但没有改变。 package scrollit; import java.awt.*; import javax.swing.*; import static javax.swing.JFrame.EXIT_ON_CLOSE; public class ScrollIt extends JFrame { public static void main(String[] args) { ScrollIt sc = new ScrollIt(); } public ScrollIt() { super(); JTextArea log = new JTextArea(); log.setPreferredSize(new Dimension(50,50)); setDefaultCloseOperation(EXIT_ON_CLOSE); add(log); pack(); setVisible(true); log.append(“a\n”); log.append(“b\n”); log.append(“c\n”); log.append(“d\n”); log.append(“e\n”); log.append(“f\n”); } }

JScrollPane未添加到JTextArea

我看到了一些像这个问题的问题,但我无法解决这个问题。 我无法在JTextArea看到JScrollPane 。 任何人都可以指出我在哪里犯了我的错误? 谢谢。 package experiement; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Experiment extends JFrame{ public Experiment(){ JTextArea tarea=new JTextArea(); tarea.setBounds(100,100,200,200); JScrollPane pan= new JScrollPane(); pan.setPreferredSize(new Dimension(100,100)); pan=new JScrollPane(tarea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); add(pan); add(tarea); setLayout(null); setSize(600,600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[]aegs){ Experiment e=new Experiment(); } }

如何在打开文件时和用户键入时突出显示java中的关键字

因此,我试图突出显示java中存在于文本文件中的关键字,因为用户打开.java文件或写入.java文件。 我想我知道如何判断文件是否属于正确的类型。 但是,我不知道如何更改某些关键字的颜色。 如果有人可以提供帮助那将是很好的,因为现在它非常令人困惑。 我想知道我是否可以以某种方式使用我的替换function。 我试图用我的几种方法试图做到这一点,但它仍然不清楚。 我已经把他的大部分方法和听众拿走了,只是知道他们在那里但是不让它更容易阅读。 import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.event.DocumentListener; import javax.swing.event.DocumentEvent; import java.util.Scanner; import java.io.*; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultHighlighter; import javax.swing.text.Highlighter; import javax.swing.text.Highlighter.HighlightPainter; import javax.swing.text.JTextComponent; import java.net.URI; import java.util.*; public class MyTextEditor extends JFrame implements ActionListener { private JPanel panel = new JPanel(new BorderLayout()); private JTextArea textArea = new […]