如何在JTextArea

时间:2016-05-04 08:44:10

标签: java jscrollpane jtextarea

我打算制作一个简单的记事本。我使用JTextArea在其中编写了一些文字,我希望在scrollbarJTextArea。我写了几行代码。

package project.notepad;

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

public class Notepad extends JFrame {
    private JTextArea area;
    private JMenu filemenu;
    private JMenu editmenu;
    private JMenu formatmenu;
    private JMenu helpmenu;
    private JScrollPane scroll;

    private JMenuBar menubar;
    private JMenuItem newmenuitem;
    private JMenuItem openmenuitem;
    private JMenuItem savemenuitem;
    private JMenuItem exitmenuitem;


    public Notepad() {
        initComponents();
        setComponents();

        setTitle("Simple Notepad");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(true);
        setSize(600, 600);
        setJMenuBar(menubar);


        menubar.add(filemenu);
        menubar.add(editmenu);
        menubar.add(formatmenu);
        menubar.add(helpmenu);
        filemenu.add(newmenuitem);
        filemenu.add(openmenuitem);
        filemenu.add(savemenuitem);
        filemenu.add(exitmenuitem);

        add(area);
        add(scroll);
    }


    public final void initComponents() {
        scroll = new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        area = new JTextArea();
        menubar = new JMenuBar();
        filemenu = new JMenu("    File");
        editmenu = new JMenu("    Edit");
        formatmenu = new JMenu("    Format");
        helpmenu = new JMenu("    Help");
        newmenuitem = new JMenuItem("    New");
        openmenuitem = new JMenuItem("    Open");
        savemenuitem = new JMenuItem("    Save");
        exitmenuitem = new JMenuItem("    Exit");
    }

    public final void setComponents() {
        area.setSize(600, 600);
        area.setBackground(Color.WHITE);
    }


    public static void main(String[] args) {
        new Notepad();
    }
}

我不确定问题出在哪里。

2 个答案:

答案 0 :(得分:0)

这里有三个问题:

1)area初始化之前,您将JScrollPane添加到area

因此,您最终得到的JScrollPane包含null组件。

要解决此问题,请在将area添加到JScrollPane之前对其进行实例化。

2)您将area添加到JFrame,然后添加包含JScrollPane的{​​{1}}。

这是错误的,area无法多次添加。最后一次添加会赢,所以最终您的Component包含JFrameJTextArea现在包含JScrollPane的混合。

要解决此问题,请删除null

3)您过早致电add(area);

只有在添加了所有组件后才能调用setVisible

以下代码显示了对两个相关方法的相应修改(已为更改添加了注释):

setVisible(true)

答案 1 :(得分:0)

在实例化区域之前,您已将区域添加到滚动窗格。只需切换滚动和区域实例化行。

area = new JTextArea();    
scroll = new JScrollPane (area,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);   

应该够了