添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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 中替换部分内容的功能。