开发者

setMaximumSize not working in java

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... :)


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.


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();


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.


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);
        }

    });
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜