java - 将两个面板彼此相邻对齐

标签 java swing alignment jpanel layout-manager

我目前正在尝试创建一个脚本编辑器。但 lineNumber JPanel 并未与 JTextArea 顶部对齐。 lineNumber JPanel 显示在 JTextArea 右侧的中心。

看起来像这样:

enter image description here

这是实例化这两个组件的类:

private ScriptEditor() {

    ((FlowLayout) this.getLayout()).setVgap(0);
    ((FlowLayout) this.getLayout()).setHgap(0);

    //This is the lineNumber JPanel which has no LayoutManager set.
    lineNumPanel = new LineNumberPanel();

    //I tried setAlignmentY but it did not work
    lineNumPanel.setAlignmentY(TOP_ALIGNMENT);

    //The text area.
    scriptArea = new JTextArea(22,15);
    scriptArea.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15));
    scriptArea.setMargin(new Insets(3, 10, 3, 10));


    //This JPanel contains the two components: lineNumber JPanel and the JTextArea
    JPanel temp = new JPanel();
    temp.add(lineNumPanel);
    temp.add(scriptArea);

    //Set the scrollPane
    JScrollPane scrollPane = new JScrollPane(temp);
    scrollPane.setPreferredSize(new Dimension(width, height));

    //Add the scrollPane to this JPanel.
    add(scrollPane);
}

最佳答案

JPanel temp = new JPanel();

默认情况下,JPanel 使用 FlowLayout。 FlowLayout 将添加到面板的组件垂直居中。如果您不喜欢这种行为,请尝试不同的布局管理器,例如水平 BoxLayout ,这将允许您根据组件的垂直对齐方式在顶部/中心/底部对齐组件。

但是,使用 JPanel 并不是最好的方法。相反,您应该将行号组件添加到滚动 Pane 的行标题中。请参阅Text Component Line Number有关此方法的示例。

关于java - 将两个面板彼此相邻对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22884632/

相关文章:

css - 元素水平居中

HTML 元素未使用 CSS 定位在右侧

java - 如何处理 JTabbedPane 中选项卡标题的高度

java - 是否可以自定义 JTree 节点?

java - 如何获取 jframe 上存在的 jbutton 的数量

java - setDisplayHomeAsUpEnabled 在我的一项 Activity 中不起作用,但在其他地方它确实有效

r - 如何在 R 中执行基本的多序列比对?

java - 尝试使用字符串标记生成器读取状态名称时出错

java - 为什么不能将 RandomAccessFile 转换为 Inputstream?

java - 在 Java 中制作决策树的最佳学习算法?