Java 调整大小后,JLabel文本在JPanel中消失

Java 调整大小后,JLabel文本在JPanel中消失,java,swing,resize,jpanel,jlabel,Java,Swing,Resize,Jpanel,Jlabel,我有两个渲染器。其中一个扩展了JTextArea,另一个继承了JPanel。我用GridBagLayout将它们添加到另一个JPanel中 当调整JTextArea的大小时,我至少可以看到一些文本。对于JPanel,我有两个标签,如果JPanel太小,它们就会完全消失 有没有办法让JLabel重新调整大小而不是消失 谢谢你的回答 使用BoxLayout for JPanel并指定最小、首选和最大尺寸解决了我的问题。检查面板的布局管理器。您是否尝试过使用框架的设置最小尺寸(尺寸)方法 frame

我有两个渲染器。其中一个扩展了JTextArea,另一个继承了JPanel。我用GridBagLayout将它们添加到另一个JPanel中

当调整JTextArea的大小时,我至少可以看到一些文本。对于JPanel,我有两个标签,如果JPanel太小,它们就会完全消失

有没有办法让JLabel重新调整大小而不是消失


谢谢你的回答


使用BoxLayout for JPanel并指定最小、首选和最大尺寸解决了我的问题。

检查面板的布局管理器。

您是否尝试过使用框架的
设置最小尺寸(尺寸)
方法

frame.setMinimumSize(new Dimension(100, 100));
看一看就知道,您看到的行为依赖于平台,因此如果您有多个平台,最好在每个平台上测试您的代码;看看哪些有效,哪些无效

下面的示例代码在Windows Vista上按需要运行:

import javax.swing.JFrame;
import java.awt.Dimension;

public class Ex extends JFrame {
    public static void main(String[] args) {
        JFrame frame = new JFrame("YOU CAN'T SHRINK ME COMPLETELY!");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setMinimumSize(new Dimension(100, 100));
        frame.setVisible(true);
    }
}

为了更快地获得更好的帮助,请包含一个。你所说的“渲染器”是什么意思?真的是XXCellRenderer,将面板作为渲染组件出售?如果没有,不要用这个词,你会把我弄糊涂的;-)我的意思是我有两个部分。其中一个是JTextArea,它工作得很好,因为它至少可以显示一些文本。JPanel隐藏了整个JLabel。这是否意味着我需要编写自己的代码来调整JPanel中每个组件的大小?我从未见过这个问题。GridBagLayout使用最小尺寸来帮助确定在没有足够空间以首选尺寸显示组件时如何收缩组件。JLabel的最小大小等于其首选大小,因此JLabel的大小不会缩小。张贴你的文章,说明你的问题,也许有人可以帮助你。问题表明正在使用GridBagLayout。他说,外部面板使用GridBagLayout,而不是包含标签的面板