gpt4 book ai didi

java - 如何制作用户可调整大小的 JTextArea?

转载 作者:行者123 更新时间:2023-12-01 17:46:14 26 4
gpt4 key购买 nike

似乎唯一的选择是设置行数,但我需要为用户调整文本区域的大小。JScrollPane 有帮助,但是当有很多文本时,我想让用户自行调整区域大小。

我该怎么做?如果我可以使用另一个类来达到此目的,我完全可以接受。

简化的代码是

import javax.swing.*;
import java.awt.*;

public class Problematic {

public static void main(String[] args) {
JFrame f = new JFrame("frame");
f.setLayout(new BorderLayout());

JPanel p1 = new JPanel();
JPanel p = new JPanel();

JButton button = new JButton("Whatever here");
JTextArea t2 = new JTextArea(5, 30);

JScrollPane scrollPane = new JScrollPane(t2);

scrollPane.setSize(600, 400);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

t2.setText("this is some random text\nthat may go for many rows\nso it may look messy");

p1.add(button);
p.add(scrollPane);

f.add(p, BorderLayout.NORTH);
f.add(p1, BorderLayout.CENTER);

f.setSize(600, 500);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

最佳答案

您可以使用 JSplitPane 来调整窗口各个区域的大小。尝试下面的例子。另请参阅我在代码中的注释。

import javax.swing.*;
import java.awt.*;

public class Problematic {

public static void main(String[] args) {
JFrame f = new JFrame("frame");
f.setLayout(new BorderLayout());

JPanel p1 = new JPanel();
JPanel p = new JPanel();
// Set BorderLayout so that scroll pane fills the panel
p.setLayout(new BorderLayout());

JButton button = new JButton("Whatever here");
JTextArea t2 = new JTextArea(5, 30);

JScrollPane scrollPane = new JScrollPane(t2);

// Setting scroll pane size is not necessary
//scrollPane.setSize(600, 400);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

t2.setText("this is some random text\nthat may go for many rows\nso it may look messy");

p1.add(button);
p.add(scrollPane);

// Use JSplitPane to make the panels resizable
f.add(new JSplitPane(JSplitPane.VERTICAL_SPLIT, p, p1), BorderLayout.CENTER);

f.setSize(600, 500);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

关于java - 如何制作用户可调整大小的 JTextArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55024370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com