套装挥杆训练;
import javax.swing.*;
import java.awt.*;
import static java.awt.Color.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static javafx.scene.paint.Color.TEAL;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
public class MyFrame extends JFrame{
public MyFrame(){
setSize(500,500);
setVisible(true);
setResizable(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
};
public static class MyPanel extends JPanel{
public MyPanel(){
setLayout(new GridBagLayout());
setBackground(BLACK);
setOpaque(true);
GridBagConstraints gbc1 = new GridBagConstraints();
GridBagConstraints gbc2 = new GridBagConstraints();
gbc1.insets = new Insets(200,0,0,200);
gbc1.ipadx = 100;
gbc1.ipady = 100;
gbc1.gridx = 1;
gbc1.gridy = 1;
gbc2.insets = new Insets(0,200,200,0);
gbc2.ipadx = 150;
gbc2.ipady = 10 ;
gbc2.gridx = 1;
gbc2.gridy = 1;
JTextArea jta1 = new JTextArea();
jta1.setLineWrap(true);
jta1.setWrapStyleWord(true);
JButton jb1 = new JButton("Have a banana!");
jb1.setToolTipText("Button prints Banana.");
ActionListener action1 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println("\nBananas!");
}
};
jb1.addActionListener(action1);
add(jta1,gbc2);
add(jb1,gbc1);
};
};
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
MyFrame jf1 = new MyFrame();
MyPanel jp1 = new MyPanel();
jf1.add(jp1);
}
});
}
}
代码只是一个简单的 JFrame、Panel、一个打印香蕉的 Button 和一个 JTextArea。当在没有换行等的情况下输入时,它只是根据应用的输入方向来扩展自身。 (按 Enter 键在该区域中向下移动会将其向上/向下拉动,然后在其中键入内容会将其向左和向右拉动,使其变大。)这是有道理的,我没有添加换行或任何东西。但是,添加这些;
jta1.setLineWrap(true);
jta1.setWrapStyleWord(true);
我得到以下结果;
只是用一张图片来展示我在说什么:
我的目标是一个有限制的 JTextArea,当超出限制时会创建一个滚动条,并且根本不改变大小。
建议?
最佳答案
What I'm aiming for is a JTextArea that has limits, when those are exceeded creates a scrollbar, and doesn't change size at all.
JTextArea jta1 = new JTextArea();
您的文本区域没有首选大小,因此它会不断增长。您需要创建具有首选大小的文本区域。这是通过使用以下方法完成的:
JTextArea jta1 = new JTextArea(5, 30);
现在,布局管理器可以使用文本区域的首选大小,并且当文本区域的首选大小大于滚动 Pane 的大小时,滚动 Pane 将显示滚动条。
when those are exceeded creates a scrollbar, and doesn't change size at all.
正如 MadProgrammer 所指出的,如果您想要一个滚动条,那么您还需要实际将文本区域添加到 JScrollPane,然后将滚动 Pane 添加到框架。因此,您还需要使用如下代码:
//add(jta1,gbc2);
add(new JScrollPane(jta1), gbc);
阅读 Swing 教程中关于 How to Use Text Areas 的部分了解更多信息和示例。
关于java - 我的 JTextArea 继续无限,尽管添加了 LineWrap 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525037/