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

如何调整 JPanel 的高度?

如何解决如何调整 JPanel 的高度?

//Attributes
//Stats GUI components
JLabel hp = new JLabel();
JLabel hpPoints = new JLabel("TEST");
JLabel chakra = new JLabel();
JLabel chakraPoints = new JLabel("TEST");
JLabel ryo = new JLabel();
JLabel ryoPoints = new JLabel("TEST");

//Output & Input GUI components
JTextField input = new JTextField();
JTextArea output = new JTextArea(1000,300);
JPanel statsPanel = new JPanel(); 
JPanel outputPanel = new JPanel();
JPanel inputPanel = new JPanel();

//Constructor
public Terminal() {
    
    setTitle("Shinobi Shinso");
    setSize(1000,600);
    //setResizable(false);
    setLocation(400,100);
    setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
    Container panneau = getContentPane();
    panneau.setLayout(new GridLayout(0,1));
    statsPanel.setLayout(new GridLayout(1,3));
    
    //Output & input
    //Add outputPanel to the panneau
    panneau.add(outputPanel);
    //Add output to outputPanel
    outputPanel.add(output);
    //Add input to outputPanel
    outputPanel.add(input);
    input.setColumns(98);
    output.setRows(15);
    output.setEditable(false);
    output.setBackground(Color.BLACK);
    output.setForeground(Color.WHITE);
    //Add stats panel
    panneau.add(statsPanel);
    //Statistics
    //Health
    hp.setIcon(new ImageIcon(new ImageIcon("D:\\eclipse-workspace\\Shinobi Shinso\\images\\scroll-hp.png").getimage().
            getScaledInstance(300,150,Image.SCALE_DEFAULT)));
    hp.setHorizontalAlignment(JLabel.CENTER);
    statsPanel.add(hp);
    hpPoints.setBounds(100,25,100,100);
    hp.add(hpPoints);

    setVisible(true);
}

这是它的显示方式:

https://i.stack.imgur.com/yZ9UZ.png

我尝试使用 JScrollPanel 和许多晦涩的编码巫术,但无济于事。我似乎找不到降低包含图片的 JPanel 高度的方法

删除图片中的 2 个卷轴,但我认为它不会改变任何东西。

解决方法

我似乎找不到降低包含图片的 JPanel 高度的方法。

不要使用 GridLayout 作为父布局管理器。 GridLayout 使所有组件的大小相同。

我建议您不要更改内容窗格的布局管理器。将其保留为默认的 BorderLayout。

然后使用:

panneau.add(outputPanel,BorderLayout.CENTER);
panneau.add(statsPanel,BorderLayout.PAGE_END);

此外,您创建的 JTextArea 不正确:

JTextArea output = new JTextArea(1000,300);

参数用于行/列,而不是宽度/高度。

所以你应该使用类似的东西:

JTextArea output = new JTextArea(15,40);

通常会在 JScrollPane 中添加一个文本区域,以便在需要时可以显示滚动条。

阅读 Swing tutorial 以了解 Swing 基础知识。有部分关于:

  1. 布局管理器
  2. 如何使用文本区域

应该会有所帮助。

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?