Java 摆动动态(自动)配合布局

Java 摆动动态(自动)配合布局,java,swing,jpanel,jlabel,gridbaglayout,Java,Swing,Jpanel,Jlabel,Gridbaglayout,考虑100(动态)JLabel对象,我想在可调整大小的JPanel中显示它们。 目前我使用网格袋布局(2列50行),但当用户调整和扩展表单时,我希望(例如)有4列25行,对于小表单(1列100行)也一样,以其他方式填充整个面板(没有任何空白)。 我知道这是应该手动完成的,目前我在用户调整表单大小后重新绘制(重新绘制)所有成员,但我只是想知道是否有任何准备好的解决方案可以这样做。 感谢高级版。您可以定义自定义LayoutManager,以便在public void layoutContainer(

考虑100(动态)
JLabel
对象,我想在可调整大小的
JPanel
中显示它们。
目前我使用网格袋布局(2列50行),但当用户调整和扩展表单时,我希望(例如)有4列25行,对于小表单(1列100行)也一样,以其他方式填充整个面板(没有任何空白)。
我知道这是应该手动完成的,目前我在用户调整表单大小后重新绘制(重新绘制)所有成员,但我只是想知道是否有任何准备好的解决方案可以这样做。

感谢高级版。

您可以定义自定义LayoutManager,以便在
public void layoutContainer(容器目标)
方法中根据需要定位子对象


此处实现了类似的示例

您可以定义自定义LayoutManager,以便在
public void layoutContainer(容器目标)
方法中根据需要定位子对象


此处实现了类似的示例

您可以定义自定义LayoutManager,以便在
public void layoutContainer(容器目标)
方法中根据需要定位子对象


此处实现了类似的示例

您可以定义自定义LayoutManager,以便在
public void layoutContainer(容器目标)
方法中根据需要定位子对象


这里实现了类似的示例

看看Rob Camick的

示例使用

import java.awt.*;
import javax.swing.*;

public class TestWrapLayout {
    public TestWrapLayout () {
        ImageIcon icon = new ImageIcon(getClass().getResource("/resources/stackoverflow2.png"));
        JPanel panel = new JPanel(new WrapLayout());
        for (int i = 1; i <= 250; i++) {
            JLabel iconlabel = new JLabel(icon);
            iconlabel.setLayout(new BorderLayout());
            JLabel textlabel = new JLabel(String.valueOf(i));
            textlabel.setHorizontalAlignment(JLabel.CENTER);
            textlabel.setForeground(Color.WHITE);
            textlabel.setFont(new Font("impact", Font.PLAIN,20));
            iconlabel.add(textlabel);
            panel.add(iconlabel);
        }
        JFrame frame = new JFrame();
        frame.add(new JScrollPane(panel));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new TestWrapLayout();
            }
        });
    }
}

import java.awt.*;
导入javax.swing.*;
公共类测试播放{
公共测试播放(){
ImageIcon=newImageIcon(getClass().getResource(“/resources/stackoverflow2.png”);
JPanel panel=newjpanel(newwraplayout());

对于(int i=1;i请看一下Rob Camick的

示例使用

import java.awt.*;
import javax.swing.*;

public class TestWrapLayout {
    public TestWrapLayout () {
        ImageIcon icon = new ImageIcon(getClass().getResource("/resources/stackoverflow2.png"));
        JPanel panel = new JPanel(new WrapLayout());
        for (int i = 1; i <= 250; i++) {
            JLabel iconlabel = new JLabel(icon);
            iconlabel.setLayout(new BorderLayout());
            JLabel textlabel = new JLabel(String.valueOf(i));
            textlabel.setHorizontalAlignment(JLabel.CENTER);
            textlabel.setForeground(Color.WHITE);
            textlabel.setFont(new Font("impact", Font.PLAIN,20));
            iconlabel.add(textlabel);
            panel.add(iconlabel);
        }
        JFrame frame = new JFrame();
        frame.add(new JScrollPane(panel));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new TestWrapLayout();
            }
        });
    }
}

import java.awt.*;
导入javax.swing.*;
公共类测试播放{
公共测试播放(){
ImageIcon=newImageIcon(getClass().getResource(“/resources/stackoverflow2.png”);
JPanel panel=newjpanel(newwraplayout());

对于(int i=1;i请看一下Rob Camick的

示例使用

import java.awt.*;
import javax.swing.*;

public class TestWrapLayout {
    public TestWrapLayout () {
        ImageIcon icon = new ImageIcon(getClass().getResource("/resources/stackoverflow2.png"));
        JPanel panel = new JPanel(new WrapLayout());
        for (int i = 1; i <= 250; i++) {
            JLabel iconlabel = new JLabel(icon);
            iconlabel.setLayout(new BorderLayout());
            JLabel textlabel = new JLabel(String.valueOf(i));
            textlabel.setHorizontalAlignment(JLabel.CENTER);
            textlabel.setForeground(Color.WHITE);
            textlabel.setFont(new Font("impact", Font.PLAIN,20));
            iconlabel.add(textlabel);
            panel.add(iconlabel);
        }
        JFrame frame = new JFrame();
        frame.add(new JScrollPane(panel));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new TestWrapLayout();
            }
        });
    }
}

import java.awt.*;
导入javax.swing.*;
公共类测试播放{
公共测试播放(){
ImageIcon=newImageIcon(getClass().getResource(“/resources/stackoverflow2.png”);
JPanel panel=newjpanel(newwraplayout());

对于(int i=1;i请看一下Rob Camick的

示例使用

import java.awt.*;
import javax.swing.*;

public class TestWrapLayout {
    public TestWrapLayout () {
        ImageIcon icon = new ImageIcon(getClass().getResource("/resources/stackoverflow2.png"));
        JPanel panel = new JPanel(new WrapLayout());
        for (int i = 1; i <= 250; i++) {
            JLabel iconlabel = new JLabel(icon);
            iconlabel.setLayout(new BorderLayout());
            JLabel textlabel = new JLabel(String.valueOf(i));
            textlabel.setHorizontalAlignment(JLabel.CENTER);
            textlabel.setForeground(Color.WHITE);
            textlabel.setFont(new Font("impact", Font.PLAIN,20));
            iconlabel.add(textlabel);
            panel.add(iconlabel);
        }
        JFrame frame = new JFrame();
        frame.add(new JScrollPane(panel));
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            public void run() {
                new TestWrapLayout();
            }
        });
    }
}

import java.awt.*;
导入javax.swing.*;
公共类测试播放{
公共测试播放(){
ImageIcon=newImageIcon(getClass().getResource(“/resources/stackoverflow2.png”);
JPanel panel=newjpanel(newwraplayout());

对于(int i=1;i
网格袋布局(2列50行),但当用户调整和扩展表单时,我希望(例如)有4列25行,对于小表单(1列100行)也一样
==对于我来说似乎没有意义,请(对于这种性质的问题,没有显示SSCCE或MCVE或MCTRE)重新阅读Oracle官方教程如何使用GridBagLayout
GridBagLayout(2列50行),但是当用户调整和扩展表单时,我希望(例如)有4列25行,对于小表单(1列100行)也一样。
==看起来对我来说没有意义,请(对于这种性质的问题,没有SSCCE、MCVE或MCTRE的指示)重新阅读Oracle官方教程如何使用GridBagLayout
GridBagLayout(2列50行),但是当用户调整和扩展表单时,我希望(例如)有4列25行,对于小表单(1列100行)也一样
==对于我来说似乎没有意义,请(对于这种性质的问题,没有SSCCE或MCVE或MCTRE的指示)重新阅读Oracle官方教程如何使用GridBagLayout
GridBagLayout(2列50行),但当用户调整大小并展开表单时,我希望(例如)有4列25行,对于小表单也是如此(1列,100行)
==对我来说似乎没有意义,请(对于这种性质的问题,没有SSCCE、MCVE或MCTRE的指示)重新阅读Oracle官方教程如何使用GridBagLayoutPERFECT亲爱的,有可能让这个家伙(布局)使用吗最小列大小?或列增加步骤?@parsaporahmad它基于
流程布局,所以可能不是。但是,我还没有真正检查源代码。也许他会过来给你一个明确的答案:-)太好了,亲爱的,有可能让这个家伙(布局)最小列大小?或列增加步骤?@parsaporahmad它基于
流程布局,所以可能不是。但是,我还没有真正检查源代码。也许他会过来给你一个明确的答案:-)太好了,亲爱的,有可能让这个家伙(布局)最小列大小?或列增加步骤?@parsaporahmad它基于
流程布局,所以可能不是。但是,我还没有真正检查源代码。也许他会过来给你一个明确的答案:-)太好了,亲爱的,有可能让这个家伙(布局)最小列大小?或列增加步骤?@parsaporahmad它基于
流程布局
,因此可能不是。但是,我还没有真正检查源代码。也许他会过来给你一个明确的答案:-)