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
相关产品推荐
相关产品推荐

