Godzilla icon indicating copy to clipboard operation
Godzilla copied to clipboard

布局问题

Open mustblade opened this issue 2 years ago • 9 comments

求求了,加个自适应布局呗 16d349f864284978efa274239815ade

mustblade avatar Jul 05 '22 07:07 mustblade

暂时没有高分辨率的显示器 无法复现

BeichenDream avatar Jul 05 '22 08:07 BeichenDream

我用的2880*1800

mustblade avatar Jul 05 '22 08:07 mustblade

我用的2880*1800

没有这个分辨率的显示器

BeichenDream avatar Jul 05 '22 08:07 BeichenDream

是不是可以尝试开下"自适应布局"的功能呢

mustblade avatar Jul 05 '22 08:07 mustblade

是不是可以尝试开下"自适应布局"的功能呢

image

Panel需要居中,JAVA的默认实现无法应用到居中布局,如果你有这方面经验,请提交一个Demo 而不是一句“尝试开下自适应布局"

BeichenDream avatar Jul 05 '22 09:07 BeichenDream

请看下是否有参考价值 import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class Test {

private static int maxW = 0;

private static int maxH = 0;

public static void main(String[] args) {

    final JFrame f = new JFrame();

    final JTabbedPane tabs = new JTabbedPane();

    tabs.add( createPanel(Color.RED, 100, 100), "Red");

    tabs.add( createPanel(Color.GREEN, 200, 200), "Green");

    tabs.add( createPanel(Color.BLUE, 300, 300), "Blue");

    final Dimension originalTabsDim = tabs.getPreferredSize();

    tabs.addChangeListener(new ChangeListener() {

        @Override

        public void stateChanged(ChangeEvent e) {

            Component p = ((JTabbedPane) e.getSource()).getSelectedComponent();

            Dimension panelDim = p.getPreferredSize();

            Dimension nd = new Dimension(

                    originalTabsDim.width - ( maxW - panelDim.width),

                    originalTabsDim.height - ( maxH - panelDim.height) );

            tabs.setPreferredSize(nd);

            f.pack();

        }

    });

    f.setContentPane(tabs);

    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

    f.pack();

    f.setLocationRelativeTo(null);

    f.setVisible(true);

}

private static final JPanel createPanel( Color color, int w, int h ) {

    JPanel p = new JPanel();

    p.setBackground(color);

    p.setPreferredSize( new Dimension(w, h));

    maxW = Math.max(w, maxW);

    maxH = Math.max(h, maxH);

    return p;

}

}

mustblade avatar Jul 05 '22 09:07 mustblade

请尝试运行这个程序看看是否还出现那种情况

TestPanel.zip

BeichenDream avatar Jul 05 '22 09:07 BeichenDream

image 可以了

mustblade avatar Jul 05 '22 09:07 mustblade

image 可以了

BUG将在下一个版本修复

BeichenDream avatar Jul 05 '22 09:07 BeichenDream