設置JFrame窗口不能夠調整大小,但能夠最大化

一、問題

一個項目,要求JFrame能夠最大化,標準,最小化。但不能夠修改窗口大小。java

但若是使用setResizable(false)就會致使,最大化按鈕的消失。因此只能另想辦法ide

二、解決

查閱資料後發現AWTEventListener能夠屏蔽一些事件。調整窗口大小又都是經過鼠標完成的因此想試一試,是否是能夠這樣來達到須要的效果。this

private class DisableMouseDraggedListener implements AWTEventListener{

        private Object source;

        private DisableMouseDraggedListener(Object source) {
            this.source = source;
        }

        @Override
        public void eventDispatched(AWTEvent e) {
            MouseEvent event = (MouseEvent) e;

            if(event.getID() == MouseEvent.MOUSE_DRAGGED && event.getSource()==source){
                event.consume();
            }
        }
    }

自定義一個DisableMouseDraggedListener類嵌入咱們的JFrame類中,攔截鼠標拖拽事件並判斷source是否是JFrame對象。consume()的意思就是讓事件失效。

而後在JFrame構造中加入spa

getToolkit().addAWTEventListener(new DisableMouseDraggedListener(this),AWTEvent.MOUSE_MOTION_EVENT_MASK);

就能夠達到不讓其經過鼠標的方式來改變窗口大小的目的。

三、遺留問題

但鼠標放在JFrame邊緣時仍是會出現修改窗口大小的鼠標箭頭,只是不能拖拽了。code

相關文章
相關標籤/搜索