0

我在谷歌上看了很多,并遵循了几个例子,但是我似乎无法让我的 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”。

4

2 回答 2

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

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

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

JTextArea textArea = new JTextArea(5, 10);

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

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

于 2013-11-09T15:32:00.837 回答
0

对了,我明白了!

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

grid.add(scrollBar, BorderLayout.CENTER);
于 2013-11-09T15:51:58.127 回答