为JTextarea创建一个WordWrap方法 - Java

时间:2013-10-28 13:09:34

标签: java swing jtextarea notepad

我认为我正走向错误的方向。我正在创建一个记事本应用程序。除了一个WordWrap

之外,我的每个方法都运行得很完美

它只是一个框架内面板内的JTextarea。

我想我应该使用JScrollPane而不是Textarea?或者甚至是它?

我如何调整textarea的宽度,或者说我需要插入一个JScrollPane。

修改

好的,所以我的尝试在某种程度上出了问题。文本区域不起作用。可能需要调整大小。

public class TextEditor extends JFrame implements ActionListener{

JFrame textFrame = new JFrame();
JPanel textPanel = new JPanel();

JTextField textArea = new JTextField();
JScrollPane scroll = new JScrollPane(textArea);


JTextArea text = new JTextArea(24,33);

public TextEditor(String str){

    super(str);

    textFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    textFrame.add(textPanel);
    textPanel=(JPanel)getContentPane();
    textPanel.setLayout(new FlowLayout());
    textPanel.setBackground(Color.WHITE);



    // Create text Area


    textPanel.add(scroll);
    scroll.add(text);
    textPanel.setFont(textAreaFont);
    textArea.setFont(textAreaFont);
    text.setFont(textAreaFont);

}

public static void main(String args[])
{
    TextEditor notePad = new TextEditor("Notepad");
    notePad.setSize(500,500);
    notePad.setVisible(true);
    notePad.setDefaultCloseOperation(EXIT_ON_CLOSE);
}

2 个答案:

答案 0 :(得分:1)

看看我试图放在一起的内容:

public class SO{
public static void main(String[] args) {

    JFrame f = new JFrame();
    JPanel p = new JPanel();

    JTextArea outputArea = new JTextArea();
    outputArea.setColumns(20);
    outputArea.setRows(20);  
    outputArea.setLineWrap(true); //Set line wrap
    outputArea.setWrapStyleWord(true); //set word wrap

    JScrollPane sp = new JScrollPane(outputArea); //Create new scroll pane with textarea inside
    p.add(sp); //add scrollPane to panel
    f.add(p); //Add panel to frame
    f.pack()
    f.setLocationRelativeTo(null); //frame location
    f.setVisible(true);
    }
}

滚动窗格是使用构造函数中的textarea创建的,这似乎允许滚动窗格“包含”JTextArea,当区域包含的文本超出限制时添加滚动条。在创建JTextArea之前,我设置了两行代码来设置自动换行,这会阻止通过将它们推到下一行而从侧面渗出的单词。看看它是否可以帮助你的项目。

祝你好运!

答案 1 :(得分:1)

enter image description here

import java.awt.*;
import javax.swing.*;

public class TextEditor extends JFrame {

JFrame textFrame = new JFrame();
JPanel textPanel = new JPanel();
JTextArea textArea = new JTextArea(10,25);

public TextEditor(String str){

    super(str);

    textFrame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); // nicer
    add(textPanel);
    textPanel.setLayout(new GridLayout());
    textPanel.setBackground(Color.WHITE);

    // Create text Area
    JScrollPane scroll = new JScrollPane(textArea);
    textPanel.add(scroll);
}

public static void main(String args[])
{
    TextEditor notePad = new TextEditor("Notepad");
    notePad.setVisible(true);
    notePad.setDefaultCloseOperation(EXIT_ON_CLOSE);
    notePad.pack();
}
}

在这段短代码中出现了很多错误,我忘记了这些变化。我记得两件事:

  • 代码对于什么是JTextField以及什么是JTextArea非常困惑。
  • 没有明显的理由,它给其他奇怪的东西添加了奇怪的东西。