-1

我是编程的初学者,我想向 JTextArea 添加一个滚动面板,所以我尝试在线研究教程。我遵循了这些示例,但它不起作用,有人可以告诉我我做错了什么。太感谢了

    public View(Model model) {
    this.model = model;
    setBounds(100,50, 800, 400);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    Container c =  getContentPane();
    addDisplay(c);
    addButtons(c);
    addTxt(c);

}

private void addDisplay(Container c){
    JPanel p = new JPanel();
    addTxt2(p);
    addTxt(p);
    add(p, "North");

}

    private void addTxt(JPanel p){
        txt = new JTextArea(15, 35);
        txt.setBackground(Color.BLACK);
        txt.setForeground(Color.WHITE);
        txt.setEditable(true);  

        JScrollPane scroll= new JScrollPane (txt);
        p.add(scroll); 


}
4

2 回答 2

1

在将任何组件添加revalidaterepaintJPanel

p.add(scroll); 
p.revalidate();
p.repaint();

从使用来看setBounds,似乎没有使用布局管理器。不要使用绝对定位(null布局)。默认情况下,大小为0 x 0so 的组件不会出现,除非设置了它们的大小。此处应使用布局管理器。

尽快发布SSCCE以获得更好的帮助

于 2013-05-22T18:22:23.347 回答
0

您必须设置滚动的范围setBounds(int, int, int, int) 并定义您的区域JTextArea

这是一个例子:

public class ScrollingTextArea extends JFrame {

    JTextArea txt = new JTextArea();
    JScrollPane scrolltxt = new JScrollPane(txt);

    public ScrollingTextArea() {

        setLayout(null);

        scrolltxt.setBounds(3, 3, 300, 200);
        add(scrolltxt);     
    }


    public static void main(String[] args) {

        ScrollingTextArea sta = new ScrollingTextArea();
        sta.setSize(313,233);
        sta.setTitle("Scrolling JTextArea with JScrollPane");
        sta.show();     
    }

}

我在这里找到了

于 2013-05-22T23:35:04.400 回答