无法让我的Jscrollpane在我的Jtextarea中工作

时间:2013-11-09 15:17:59

标签: java swing jpanel jscrollpane

我在谷歌上看了很多并且遵循了几个例子但是我似乎无法让我的JScrollPane在JPanel中的textarea上工作。

   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 个答案:

答案 0 :(得分:0)

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

请勿对首选尺寸进行硬编码。首选大小将覆盖您设置行/列的尝试。所以摆脱那条线。

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

JTextArea textArea = new JTextArea(5, 10);

提供文本区域的初始大小的提示。现在,文本区域可以在添加或删除文本时更改大小,并在需要时显示滚动条。

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

答案 1 :(得分:0)

对,我明白了!

基本上我不得不以不同的方式添加它...我接近它的方式是错误的!

grid.add(scrollBar, BorderLayout.CENTER);