2013-11-09 58 views
0

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

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”。

回答

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

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

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

JTextArea textArea = new JTextArea(5, 10); 

提供的提示,文本区域的大小INTIAL。现在文本区域可以随着文本的添加或删除而改变,滚动条将在需要时显示。

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

+0

好的谢谢你的信息。当文本到达文本框的末尾时,我遵循了你所说的话......它使文本框更大,而不是滚动显示 – lecardo

+0

@Bobski,但答案不被接受。 – camickr

0

对我知道了!

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

grid.add(scrollBar, BorderLayout.CENTER);