You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Swing GUI中JTextArea滚动条异常 文本区域与滚动条互相覆盖

问题原因

你代码里的组件添加逻辑完全错误,导致滚动面板和文本区域的层级关系错乱:

  • 当你通过JScrollPane scroll = new JScrollPane ( ta )把文本区域放到滚动面板后,就不能再把ta单独添加到窗口容器中,重复添加会直接把ta从滚动面板中剥离,导致滚动面板失效
  • 错误执行了ta.add(scroll),相当于反过来把滚动面板塞到了文本区域内部,自然会出现两个组件互相覆盖的问题
修正代码

只需要修改组件添加部分的逻辑即可,完整修正后的代码段如下:

// Text Area at the Center
JTextArea ta = new JTextArea ( 16, 58 );
ta.setEditable ( false ); // set textArea non-editable
JScrollPane scroll = new JScrollPane ( ta );
scroll.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );

send.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent send) {
        String data = tf.getText();
        ta.append("You: " + data + "\n");
        tf.setText("");
        System.out.println(data);
    }
});

//Adding Components to the frame.
frame.getContentPane().add(BorderLayout.SOUTH, panel);
// 直接添加滚动面板到窗口,不要单独添加文本区域
frame.getContentPane().add(BorderLayout.CENTER, scroll);
frame.setVisible(true);

内容的提问来源于stack exchange,提问作者Hatsune Miku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:36:03