垂直滚动条将不会显示。这是我的代码。 Java框架显示了textarea,但未显示textarea的滚动条。我是一名绿色程序员,所以我对自己的工作一无所知。
我应该怎么做才能显示滚动条? 请查看我的代码并找到我的错误。 我希望滚动条显示在JTextArea上
import javax.swing.*;//imported for the frame of the chatbot
import java.awt.*;
import java.awt.event.*;
public class Bot extends JFrame{
private JTextArea Chatarea = new JTextArea(10,20);
private JTextField Chatbox = new JTextField();
private JScrollPane Scroll = new JScrollPane(Chatarea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
public Bot(){//frame for the chatbot
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setLayout(null);
frame.setSize(600 , 600);
frame.setTitle("JAVADDY");
frame.add(Chatarea);
frame.add(Chatbox);//
//for chat area
Chatarea.setSize(560, 400);
Chatarea.setBackground(Color.YELLOW);
Chatarea.setLocation(2, 50);
Chatarea.setLineWrap(true);
Chatarea.setEditable(false);//make jtextarea uneditable
//for chat box
Chatbox.setSize(540, 30);
Chatbox.setLocation(2, 500);
//for scrolling
Scroll.setSize(1024,800);
Scroll.setVisible(true);
Chatbox.addActionListener(new ActionListener(){
//@Override
public void actionPerformed(ActionEvent arg0){
String gtext = Chatbox.getText();
Chatarea.append("You -> "+ gtext+"\n");
Chatbox.setText("");
//place algorithm here
if(gtext.contains("Hello")){
//find way to connect to database
bot("Hi");
}
else{
bot("I don't understand.");
}
}
});
}// end of frame for the chatbot
private void bot(String string){
Chatarea.append("Bot ->" +string+"\n");
}
public static void main(String[] args){
new Bot();
}
}
答案 0 :(得分:0)
您是否使用了JScrollPane.setViewport(JScrollPane内部是什么)? 试试:Scroll.setViewport(Chatarea);
如果所有JScrollPane的内容都适合,则滚动条将被隐藏。当JScrollPane内部包含许多大元素时,将显示一个滚动条,以便在其中滚动。
在JScrollPane中添加许多按钮或标签以查看是否出现滚动条(如果没有显示),我们将找出原因
答案 1 :(得分:0)
尽管YoungDev提供了很好的建议,但问题实际上出在这里:
Chatarea.setSize(560, 400);
不要设置JTextArea的大小,因为这会限制JTextArea在需要时永远不会扩展。而是设置其列和行属性以约束 visible 列和行,但不限制其实际大小,从而允许其扩展。
也摆脱这个:
frame.setLayout(null);
当您忽略布局管理器而陷入困境时。