0

我认为我正朝着错误的方向前进。我正在创建一个记事本应用程序。除了一个之外,我的所有方法都运行得很好 - WordWrap

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

我想我应该使用 JScrollPane 而不是 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);
}
4

2 回答 2

1

在此处输入图像描述

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();
}
}

那个简短的代码中有很多错误,以至于我忘记了更改。我能记得的两件事是:

  • 代码对什么是 aJTextField和什么是 a感到很困惑JTextArea
  • 它无缘无故地在其他奇怪的事情上添加了奇怪的东西。
于 2013-10-28T15:00:30.800 回答
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 时,我设置了两行代码来设置自动换行,这可以通过将单词推到下一行来阻止单词从侧面渗出。看看它是否对您的项目有帮助。

祝你好运!

于 2013-10-28T13:51:54.730 回答