setMaximumSize not working in java

拟墨画扇 提交于 2019-11-28 03:50:39

问题


I hava a java program with a JFrame

I am using absolute positioning

here is my main function

public static void main(String[] args) {
    ape Ape = new ape();
    Ape.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Ape.setSize(1000,1000);
    Ape.setMinimumSize(new Dimension(1000,1000));
    Ape.setMaximumSize(new Dimension(1000,1000));
    Ape.setVisible(true);
}

When I run the program I try to resize it and make the window smaller but I can't

when I try to make the window bigger it works fine I basicly skips the setMaximumSize() function

I have read around and aparently this has happened before

is this a known bug?

if so I heard I could make a Window Listener, when I tried it I implemented the functions that WindowListener needed but could not find anything to solve my problem

please try this yourself and see what happens...

thanks in advance

PS... please don't laugh about the names I give my classes... :)


回答1:


see http://forums.sun.com/thread.jspa?threadID=5342801:

It's a known bug:

  • http://bugs.sun.com/bugdatabase/view_bug.do;?bug_id=6200438
  • http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4744281
  • http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4320050

Maybe you could use

Ape.setResizable(false)

instead?

PS: It's a convention to give classes names that start with a capital letter and variables ones with a small letter, not vice versa.




回答2:


In my case I used the following and it worked:

    Dimension newDim = new Dimension(width, height);

    label.setMinimumSize(newDim);
    label.setPreferredSize(newDim);
    label.setMaximumSize(newDim);
    label.setSize(newDim);
    label.revalidate();



回答3:


I fixed it like this :

    frame.setBounds(0, 0, 1480, 910);
    frame.setMinimumSize(new Dimension(1200, 799));
    frame.setMaximumSize(new Dimension(1480, 910));
    frame.setPreferredSize(new Dimension(1480, 910));
    frame.setLocationRelativeTo(null);
    frame.addComponentListener(new ComponentAdapter() {

        @Override
        public void componentResized(ComponentEvent e) {
            double w = frame.getSize().getWidth();
            double h = frame.getSize().getHeight();
            if(w > 1480.0 && h > 910.0){
                frame.setSize(new Dimension(1480, 910));
                frame.repaint();
                frame.revalidate();
            }

            super.componentResized(e);
        }

    });



回答4:


For Netbeans user try to set values for the maximum frame in setMaximizedBounds() click in properties of frame you will find an option to define values for setMaximizedBounds.



来源:https://stackoverflow.com/questions/4061010/setmaximumsize-not-working-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!