import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.Timer;
public class Main {
private static GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
private static GraphicsDevice[] gds = ge.getScreenDevices();
private static GraphicsConfiguration gc = gds[0].getDefaultConfiguration();
private static int speed = 0;
public static JFrame jf = new JFrame("投屏", gc);
public static JButton jb = new JButton("选择");
public static JTextPane jtp = new JTextPane();
public static JScrollPane jsp = new JScrollPane(jtp);
private static JScrollBar jsb = jsp.getVerticalScrollBar();
private static String userHome = System.getProperty("user.home") + "/Desktop";
private static JFileChooser jfc = new JFileChooser(userHome);
private static Timer t = new Timer(50, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int getValue = Main.jsb.getValue();
System.out.println(e.getSource());
Main.jsb.setValue(getValue += speed);
}
});
public static void main(String[] args) {
jf.setBounds(0, 0, 1280, 720);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
int showOpenDialog = jfc.showOpenDialog(jf);
if (showOpenDialog == JFileChooser.APPROVE_OPTION) {
File f = jfc.getSelectedFile();
try (BufferedReader br = new BufferedReader(new FileReader(f))) {
String str = "";
String s = "";
while ((s = br.readLine()) != null) {
str += s + "\n";
}
System.out.println(str);
jtp.setText(str);
} catch (Exception e) {
e.printStackTrace();
}
t.stop();
}
jtp.setCaretPosition(0);
jtp.requestFocusInWindow();
}
});
jtp.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int i = e.getKeyCode();
int getValue = Main.jsb.getValue();
if (i == KeyEvent.VK_E) {
Main.jsb.setValue(getValue -= 4);
} else if (i == KeyEvent.VK_D) {
Main.jsb.setValue(getValue += 4);
} else if (i == KeyEvent.VK_1 || i == KeyEvent.VK_NUMPAD1) {
Main.speed = 1;
t.restart();
} else if (i == KeyEvent.VK_2 || i == KeyEvent.VK_NUMPAD2) {
Main.speed = 2;
t.restart();
} else if (i == KeyEvent.VK_3 || i == KeyEvent.VK_NUMPAD3) {
Main.speed = 3;
t.restart();
} else if (i == KeyEvent.VK_4 || i == KeyEvent.VK_NUMPAD4) {
Main.speed = 4;
t.restart();
} else if (i == KeyEvent.VK_5 || i == KeyEvent.VK_NUMPAD5) {
Main.speed = 5;
t.restart();
} else if (i == KeyEvent.VK_6 || i == KeyEvent.VK_NUMPAD6) {
Main.speed = 6;
t.restart();
} else if (i == KeyEvent.VK_7 || i == KeyEvent.VK_NUMPAD7) {
Main.speed = 7;
t.restart();
} else if (i == KeyEvent.VK_8 || i == KeyEvent.VK_NUMPAD8) {
Main.speed = 8;
t.restart();
} else if (i == KeyEvent.VK_9 || i == KeyEvent.VK_NUMPAD9) {
Main.speed = 9;
t.restart();
} else if (i == KeyEvent.VK_0 || i == KeyEvent.VK_NUMPAD0) {
Main.speed = 0;
Main.t.stop();
} else if (i == KeyEvent.VK_UP || i == KeyEvent.VK_DOWN || i == KeyEvent.VK_LEFT || i == KeyEvent.VK_RIGHT || i == KeyEvent.VK_PAGE_UP || i == KeyEvent.VK_PAGE_DOWN) {
e.consume();// 限定某些按键不可用
} else if (i == KeyEvent.VK_ESCAPE) {
int result = JOptionPane.showConfirmDialog(jf, "退出", "退出", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
jf.setVisible(false);
jf.dispose();
System.exit(0);
return;
}
}
jf.setTitle("主屏幕-速度:" + Main.speed);
}
});
jtp.setEditable(false);
jtp.setFont(new Font("", Font.BOLD, 80));
jf.add(jb, BorderLayout.NORTH);
jf.add(jsp, BorderLayout.CENTER);
jf.setVisible(true);
}
}
10-06
2553
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-17
81
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-17
84
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-17
107
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-15
359
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-21
410
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-24