如何在Java Swing中在分割平面的右侧添加两个组件

发布于 2025-01-17 06:58:48 字数 364 浏览 2 评论 0原文

我想在右侧添加两个组件,即分割平面右侧的 JTextFieldJTable 。下面的代码不起作用。我该怎么办?

这是我想要的 UI

上面代码的结果:(但是如果我添加组件(表)中JScrollPane 然后它在右侧显示表格

I want to add two components on the right side, i.e. JTextField and JTable on right side of the split plane. The below code is not working. What shall I do?

Here is the UI I want to look like

The result of the above code :( but if I add component (table) in the JScrollPane then it's showing table on right side.

after adding the panel into the jscrollpane I'm getting this

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

扬花落满肩 2025-01-24 06:58:49

不要将 布局管理器 设置为 null。使用适当的布局管理器。我建议使用 BorderLayout

下面的代码不是完整的解决方案,只是一个帮助您入门的示例。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTree;

public class SpliTest {
    private void buildAndDisplayGui() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTree tree = new JTree();
        JScrollPane treeScrollPane = new JScrollPane(tree);
        JTable table = new JTable(2, 4);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane tableScrollPane = new JScrollPane(table);
        JTextField textField = new JTextField(20);
        JPanel right = new JPanel(new BorderLayout());
        right.add(textField, BorderLayout.PAGE_START);
        right.add(tableScrollPane, BorderLayout.CENTER);
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, treeScrollPane, right);
        frame.add(splitPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> new SpliTest().buildAndDisplayGui());
    }
}

这是屏幕截图。

屏幕截图

Don't set the layout manager to null. Use an appropriate layout manager. I suggest using BorderLayout.

The below code is not a complete solution, just an example to get you started.

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTree;

public class SpliTest {
    private void buildAndDisplayGui() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTree tree = new JTree();
        JScrollPane treeScrollPane = new JScrollPane(tree);
        JTable table = new JTable(2, 4);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        JScrollPane tableScrollPane = new JScrollPane(table);
        JTextField textField = new JTextField(20);
        JPanel right = new JPanel(new BorderLayout());
        right.add(textField, BorderLayout.PAGE_START);
        right.add(tableScrollPane, BorderLayout.CENTER);
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, treeScrollPane, right);
        frame.add(splitPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> new SpliTest().buildAndDisplayGui());
    }
}

Here is a screen capture.

screen capture

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文