2012-08-31 18 views
1

我想知道如何設置一個JDialog,當它被設置爲setUndecorated(true);時。調整大小可以通過外框來完成。當它未修飾時,沒有框架,然後JDialog不能調整大小。當外部框架不可用時,如何調整JDialog的大小?如何在JDialog處於未裝飾狀態時調整它的大小?

+0

爲什麼用戶甚至嘗試調整未修飾的浮動窗口?鑑於它們通常不可調整大小,除非出現大的,紅色的閃爍文字「可以改變我的尺寸!」,否則它們可能永遠不會出現。我認爲這個圖形用戶界面比「如何?」有更大的問題。 –

+0

@AndrewThompson,謝謝你的關注。在這裏使用undecorating是因爲我想給一些看上去很漂亮的樣子並且讓角落變成圓形,並且有很少的原因......但是用戶仍然應該能夠調整JDialog的尺寸 –

+0

一個代碼片段,它提供了一個解決方案[here](http:/ /www.coderanch.com/t/335891/GUI/java/JDialog-undecorated-but-resizeable) –

回答

2

我假設你的意思是如何可以將用戶調整未修飾的對話框(如開發者可以隨時撥打setSize

可以做到這一點的唯一方法是自己實現的邏輯。

這將需要實施MouseListener和監測mousePressedmouseReleasedmouseDragged事件

你需要考慮到,你可能只需要在對話框周圍排水溝,將觸發調整大小(如5個像素)。重要的是沒有其他組件放置在此排水溝中,因爲它們會覆蓋您鼠標偵聽器。

+0

非常感謝。我發現你的意思是代碼片斷。 –

2

沒有測試,但是從我收集看來,你只需要下面的方法:

// window reszie event 
private void _setUpWindowResizeEvent() { 
this.addMouseMotionListener(
new MouseMotionListener() { 

public void mouseDragged(MouseEvent mouseEvent) { 
if(mHozResizeEnabled || mVerResizeEnabled) { 
int x = mouseEvent.getX(); 
int y = mouseEvent.getY(); 
_resizeWindow(
MouseInfo.getPointerInfo().getLocation()); 
sticky.setSize(getSize()); 
_fireStickyUpdated(); 
} 
} 

參考: http://tech.groups.yahoo.com/group/JPGroup/message/1877

+1

非常感謝。 –

相關問題