有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使我的Jscrollpane在我的Jtextarea中工作

我已经在google上查阅了很多,并遵循了几个示例,但是我似乎无法让我的JScrollPane在JPanel中的文本区域上工作

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

class main
{
    public static void main(String Args[])
    {
    frame f1 = new frame();
    }
}

class frame extends JFrame      
{

    JButton B = new JButton("B");   
    JButton button = new JButton("A");  
    JTextArea E = new JTextArea("some lines", 10, 20);
    JScrollPane scrollBar = new JScrollPane(E);
    JPanel grid = new JPanel ();        

    frame()
    {


    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(500,800);
    setTitle("Mobile Phone App");
    setLocationRelativeTo(null);        

    E.setLineWrap(true);
    E.setEditable(false);

     grid.add(button);
     button.addActionListener(new action());

    grid.add(B);
    B.addActionListener(new action());

    //grid.add(E);
    grid.getContentPane().add(scrollBar);
    add(grid);              



    setVisible(true);
    }
    class action implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            String V = E.getText();

            if(e.getSource() == button)
            {
                E.setText(V + "A is pressed");
            }
            if(e.getSource() == B)
            {
                E.setText(V + "B is pressed");
            }
        }
    }

}

如果有人能看出我的错误,那就太好了。我添加了JscrollPane,在其中添加了文本区域“e”


共 (2) 个答案

  1. # 1 楼答案

    E.setColumns(10);
    E.setRows(5);
    E.setPreferredSize(new Dimension(10,5)); // delete this
    

    不要硬编码首选尺寸。首选大小将覆盖您设置行/列的尝试。所以把那句台词去掉

    注意,在创建文本区域时,还可以指定行/列:

    JTextArea textArea = new JTextArea(5, 10);
    

    为文本区域的初始大小提供提示。现在,文本区域的大小可以随着文本的添加或删除而改变,并且滚动条会在需要时出现

    还要遵循标准的java命名约定。变量名不应以大写字符开头

  2. # 2 楼答案

    对,我明白了

    基本上,我必须以不同的方式添加它。。。我接近它的方式是错误的

    grid.add(scrollBar, BorderLayout.CENTER);