outerPanel.add(scrollPane, BorderLayout.CENTER);
甲BoxLayout的不采取约束,所以BorderLayout.CENTER是不必要的。
问题是,BoxLayout尊重组件的最大尺寸,这对于滚动窗格来说设置得非常大。
不是使用BoxLayout,而是使用带有FlowLayout的面板。
运行下面的示例以查看您当前正在执行的操作。然后注释掉setLayout(...)语句并再次运行。默认情况下,面板使用FlowLayout,这样你就可以得到你想要的东西。
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class SSCCE extends JPanel
public SSCCE()
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
JTextArea textArea = new JTextArea(5, 30);
JScrollPane scrollPane = new JScrollPane(textArea);
//scrollPane.setMaximumSize(scrollPane.getPreferredSize());
add(scrollPane);
private static void createAndShowUI()
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new SSCCE());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
public static void main(String[] args)
EventQueue.invokeLater(new Runnable()
public void run()
createAndShowUI();
或者,如果你真的想保持的BoxLayout然后离开保持setLayout的(...)语句,然后设置最大尺寸等于优先停留大小。很多人会说你不应该直接调用“setXXX()”方法,而应该重写scrollpane的setMaximumSize()方法以返回首选大小。
请注意,在测试这两个解决方案时,请确保您使窗口小于滚动窗口以查看每个布局的工作方式。
outerPanel.add(scrollPane, BorderLayout.CENTER);甲BoxLayout的不采取约束,所以BorderLayout.CENTER是不必要的。问题是,BoxLayout尊重组件的最大尺寸,这对于滚动窗格来说设置得非常大。不是使用BoxLayout,而是使用带有FlowLayout的面板。运行下面的示例以查看您当前正在执行的操作。然后注释掉setLayout...
textarea
通过cols和rows设置宽度和高度;也可以用style来设置width和height,分别介绍:
1. 设置宽度100%,
textarea
宽度随父元素变化;
2. 设置rows,
textarea
高度会发生变化,不再是仅仅一行;
以下是演示html,转载自:http://blog.csdn.net/domingoluis/article/details/667...
// 获取当前光标的位置
int start =
textArea
.getSelectionStart();
int end =
textArea
.getSelectionEnd();
// 替换选中的部分内容
String replacedText = "
Java
Swing
";
textArea
.replaceRange(replacedText, start, end);
在上面的示例中,我们首先创建了一个
JTextArea
对象,并设置了一些文本内容。然后,使用 `getSelectionStart()` 和 `getSelectionEnd()` 方法获取当前光标所选中的起始位置和结束位置。
接下来,我们定义要替换的文本内容为 "
Java
Swing
"。最后,使用 `replaceRange()` 方法将选中的部分内容替换为新的文本内容。
这样,您就可以使用上述代码来实现在
JTextArea
中替换部分内容的功能。