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);
}
});
精彩评论