Frage Wenn Sie JFrame transparent machen, wird der Bildlauf auf dem Mac unterbrochen


Ich habe eine transparente undekorierte JFrame das setze ich mit ein AWTUtilities.setWindowOpaque(this, false). Auf der JFrameIch habe eine Scrollscheibe; Es funktioniert perfekt unter Windows. Auf dem Mac das ganze JFrame ist ziehbar; Wenn ich also versuche, durch Klicken und Halten der Maus auf der Bildlaufleiste durch den Bildlaufbereich zu scrollen, bewegt sich der gesamte Bildbereich anstelle des Bildlaufleisten-Bildlaufbereichs. Ich habe auch versucht zu verwenden setBackground(new Color(0,0,0,0)) Anstatt von setWindowOpaque(), aber es hat das gleiche Problem. Irgendwelche Ideen, wie das zu beheben ist?


6
2018-04-04 14:04


Ursprung


Antworten:


Wie in. Vorgeschlagen dieser ähnliche Thread, Versuchen:

getRootPane().putClientProperty("apple.awt.draggableWindowBackground", Boolean.FALSE);

Wenn Sie diese Option verwenden, ist die Bildlaufleiste verwendbar und das Fenster wird nicht gezogen. Sie können jedoch mit einem unbeweglichen Fenster festhängen, es sei denn, Sie fügen ein hinzu MouseMotionListener und verschiebe das Fenster in der mouseDragged() Methode mit einem Anruf wie frame.setLocation().

Stattdessen können Sie den Benutzer zwingen, auf die Pfeilschaltflächen der Bildlaufleiste zu klicken, anstatt die Bildlaufleiste selbst zu ziehen ... Aber das ist nicht die benutzerfreundlichste Idee, die ich je gesehen habe.


1
2017-07-23 07:27