有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何调整/缩放复杂的JFrame

我有一个复杂的JFrame。它在absoluteLayout中有一个主面板,它有按钮和标签,两个jFreeCharts,还有一个带有特定GridLayout的(子)面板,我用多个标签填充它

是否有调整/缩放整个内容的方法

pack() does not work because of the layout.

是否有一种更基本的“规模化”方法


共 (2) 个答案

  1. # 1 楼答案

    我的评论代码看起来是这样的。我没有测试这个,这更像是一个想法。更容易用代码表达我的想法

    public void scaleContainer(Container c, double xFactor, double yFactor)
    {
        Component[] eles = c.getComponents();
        for(int i = 0 ; i < eles.length ; i++)
        {
            eles[i].setBounds(new Rectangle(
                 (int) eles[i].getX() * xFactor, 
                 (int) eles[i].getY() * yFactor, 
                 (int) eles[i].getWidth() * xFactor, 
                 (int) eles[i].getHeight() * yFactor))
            if(eles[i] instanceof Container)
            {
                if(((Container)eles[i]).getLayout() == null) //If the container has it's own layout, let it assign it's own components
                    scaleContainer((Conatiner)eles[i], xFactor, yFactor);
            }
        }
    }
    

    如果要按固定数量的像素而不是因子进行缩放,则需要计算因子。该系数为1 + (extraWidth / previousWidth)(高度与之类似)

  2. # 2 楼答案

    我不知道有什么方法可以按照你的要求来做,但更好的方法是使用函数,将每个元素的宽度/高度设置为当前宽度/高度的百分比,这样你将始终得到相同的布局,而不是你要求的基本布局