added JExtendedInternalFrame

JDiaAutoScaleFix
Harald Wolff 2018-02-05 10:29:38 +01:00
parent 39c548a13f
commit 03f1363ec9
1 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,109 @@
package org.hwo.ui;
import javax.swing.JInternalFrame;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class JExtendedInternalFrame extends JInternalFrame
{
private static final long serialVersionUID = 1L;
private boolean keepInDesktopPane;
public JExtendedInternalFrame() {
this.putClientProperty("JInternalFrame.frameType", "normal");
addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
Component dp = getParent();
Dimension dpr = dp.getSize();
Rectangle b = getBounds();
boolean reset = false;
if (b.x < 0) {
reset = true;
b.x = 0;
}
if (b.y < 0) {
reset = true;
b.y = 0;
}
if (b.x + b.width > dpr.width) {
b.x = dpr.width - b.width;
reset = true;
}
if (b.y + b.height > dpr.height){
b.y = dpr.height - b.height;
reset = true;
}
if (reset) {
setBounds(b);
}
}
@Override
public void componentResized(ComponentEvent e) {
Component dp = getParent();
Dimension dpr = dp.getSize();
Rectangle b = getBounds();
boolean reset = false;
if (b.x < 0) {
reset = true;
b.width += b.x;
b.x = 0;
}
if (b.y < 0) {
reset = true;
b.height += b.y;
b.y = 0;
}
if (b.x + b.width > dpr.width) {
b.width = dpr.width - b.x;
reset = true;
}
if (b.y + b.height > dpr.height){
b.height = dpr.height - b.y;
reset = true;
}
if (reset) {
setBounds(b);
}
}
});
}
public boolean isKeepInDesktopPane() {
return keepInDesktopPane;
}
public void setKeepInDesktopPane(boolean keepInDesktopPane) {
this.keepInDesktopPane = keepInDesktopPane;
}
}