微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个 JPanel 并排但大小固定

如何解决两个 JPanel 并排但大小固定

我是整个 Java 的新手,我一直在尝试制作一个窗口,其中 2/3 的窗口是文本框,另一个是空的 JPanel(供以后使用),但我不确定如何执行此操作。我尝试过 Gridlayout 但注意到您无法指定组件可以占用多少列。我真的不介意它是如何完成的,但有人可以帮我吗?

搜索了多个其他帖子,例如这个具有非常相似概念的帖子,但得到了一个我尝试过但以我不喜欢的产品结尾的答案: Two JPanels side by side in a JFrame with one JPanel having a fixed width,我更喜欢这样的东西,它被锁定在左边的 2/3 和右边的 1/3:Picture of TextPanel and JPanel

这是我尝试过的:

import javax.swing.*;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class GUI {
    public static final int sizeX = 1280;
    public static final int sizeY = 680;
    public static JTextPane textBox;

    public static JPanel createGui() {
        //Create panels
        JPanel mainPanel = new JPanel();
        JPanel textPanel = new JPanel();
        JPanel inventoryPanel = new JPanel();

        //Setup panel details
        mainPanel.setPreferredSize(new Dimension(sizeX,sizeY));
        textPanel.setBackground(Color.BLACK);
        inventoryPanel.setBackground(new Color(71,22,22));

        //Create custom font
        try {
            Font customFont = Font.createFont(Font.TRUETYPE_FONT,new File("TheDungeonDungeon/resources/font.ttf")).deriveFont(10f);
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            ge.registerFont(customFont);

            textBox = new JTextPane();
            textBox.setFont(customFont);
        } catch (IOException|FontFormatException e) {
            System.out.println("<Error> Font failure");
        }

        SimpleAttributeSet attributeSet = new SimpleAttributeSet();  
        StyleConstants.setForeground(attributeSet,Color.white);

        textBox.setAutoscrolls(true);
        textBox.setEditable(false);
        textBox.setBackground(Color.black);
        textBox.setCharacterattributes(attributeSet,true);  
        textBox.setText("Text");

        textPanel.add(textBox);
        inventoryPanel.add(new JLabel("Empty"));
        
        mainPanel.setLayout(new GridLayout(1,3));
        mainPanel.add(textPanel); //I want this to take up 2 columns
        mainPanel.add(inventoryPanel); //I want this to take up 1 column
        return mainPanel;
    }
}

我希望有人能提供帮助,我不介意它是否是一种与 Gridlayout 完全不同的方法。对不起,如果我做错了或奇怪的事情。我是整个 stackoverflow 网站和 java 的新手。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。