Compare commits
1 Commits
98ff3b9b76
...
c0aa3421a4
| Author | SHA1 | Date | |
|---|---|---|---|
| c0aa3421a4 |
@@ -2,7 +2,7 @@ package io.swtc;
|
|||||||
|
|
||||||
import com.github.sarxos.webcam.Webcam;
|
import com.github.sarxos.webcam.Webcam;
|
||||||
import io.swtc.proccessing.ui.IconSetter;
|
import io.swtc.proccessing.ui.IconSetter;
|
||||||
import io.swtc.proccessing.ui.iframe.*; // Your custom frames
|
import io.swtc.proccessing.ui.iframe.*;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
@@ -10,6 +10,7 @@ import java.awt.event.MouseAdapter;
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class SwingIFrame {
|
public class SwingIFrame {
|
||||||
private final JFrame mainFrame;
|
private final JFrame mainFrame;
|
||||||
@@ -109,7 +110,14 @@ public class SwingIFrame {
|
|||||||
popupMenu.removeAll(); // clean slate
|
popupMenu.removeAll(); // clean slate
|
||||||
|
|
||||||
JCheckBoxMenuItem fullscreenItem = new JCheckBoxMenuItem("Fullscreen");
|
JCheckBoxMenuItem fullscreenItem = new JCheckBoxMenuItem("Fullscreen");
|
||||||
|
JCheckBoxMenuItem mmfullscreenItem = new JCheckBoxMenuItem("Multi Monitor Fullscreen");
|
||||||
|
JCheckBoxMenuItem backgroundcolor = new JCheckBoxMenuItem("Calmer Background");
|
||||||
|
JMenuItem colorpicker = new JMenuItem("Set background color");
|
||||||
|
|
||||||
fullscreenItem.addActionListener(e -> toggleFullscreen());
|
fullscreenItem.addActionListener(e -> toggleFullscreen());
|
||||||
|
mmfullscreenItem.addActionListener(e -> toggleMMFullscreen());
|
||||||
|
backgroundcolor.addActionListener(e -> toggleBackground());
|
||||||
|
colorpicker.addActionListener(e -> chooseBgColor());
|
||||||
|
|
||||||
popupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
|
popupMenu.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -121,6 +129,22 @@ public class SwingIFrame {
|
|||||||
});
|
});
|
||||||
|
|
||||||
popupMenu.add(fullscreenItem);
|
popupMenu.add(fullscreenItem);
|
||||||
|
popupMenu.add(mmfullscreenItem);
|
||||||
|
popupMenu.add(backgroundcolor);
|
||||||
|
popupMenu.add(colorpicker);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void chooseBgColor() {
|
||||||
|
Color selected = JColorChooser.showDialog(
|
||||||
|
mainFrame,
|
||||||
|
"Select Background Color",
|
||||||
|
desktopPane.getBackground()
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!Objects.isNull(selected)) {
|
||||||
|
desktopPane.setBackground(selected);
|
||||||
|
desktopPane.repaint();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupBlackBg() {
|
private void setupBlackBg() {
|
||||||
@@ -137,6 +161,7 @@ public class SwingIFrame {
|
|||||||
|
|
||||||
private void setupFullscreenToggle() {
|
private void setupFullscreenToggle() {
|
||||||
JRootPane root = mainFrame.getRootPane();
|
JRootPane root = mainFrame.getRootPane();
|
||||||
|
// One Monitor FS
|
||||||
root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
|
root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
|
||||||
.put(KeyStroke.getKeyStroke("F11"), "toggleFullscreen");
|
.put(KeyStroke.getKeyStroke("F11"), "toggleFullscreen");
|
||||||
root.getActionMap().put("toggleFullscreen", new AbstractAction() {
|
root.getActionMap().put("toggleFullscreen", new AbstractAction() {
|
||||||
@@ -145,6 +170,16 @@ public class SwingIFrame {
|
|||||||
toggleFullscreen();
|
toggleFullscreen();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Multi Monitor FS
|
||||||
|
root.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
|
||||||
|
.put(KeyStroke.getKeyStroke("F12"), "toggleMMFullscreen");
|
||||||
|
root.getActionMap().put("toggleMMFullscreen", new AbstractAction() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
toggleMMFullscreen();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleBackground() {
|
private void toggleBackground() {
|
||||||
@@ -153,6 +188,33 @@ public class SwingIFrame {
|
|||||||
desktopPane.repaint();
|
desktopPane.repaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void toggleMMFullscreen() {
|
||||||
|
if (!fullscreen) {
|
||||||
|
windowedBounds = mainFrame.getBounds();
|
||||||
|
|
||||||
|
Rectangle virtualBounds = new Rectangle();
|
||||||
|
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||||
|
GraphicsDevice[] gs = ge.getScreenDevices();
|
||||||
|
|
||||||
|
for (GraphicsDevice gd : gs) {
|
||||||
|
GraphicsConfiguration[] gc = gd.getConfigurations();
|
||||||
|
for (GraphicsConfiguration configuration : gc) {
|
||||||
|
virtualBounds = virtualBounds.union(configuration.getBounds());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mainFrame.dispose();
|
||||||
|
mainFrame.setUndecorated(true);
|
||||||
|
|
||||||
|
mainFrame.setBounds(virtualBounds);
|
||||||
|
mainFrame.setVisible(true);
|
||||||
|
|
||||||
|
fullscreen = true;
|
||||||
|
} else {
|
||||||
|
toggleFullscreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Toggle fullscreen mode */
|
/** Toggle fullscreen mode */
|
||||||
private void toggleFullscreen() {
|
private void toggleFullscreen() {
|
||||||
if (!fullscreen) {
|
if (!fullscreen) {
|
||||||
|
|||||||
Reference in New Issue
Block a user