Java給JFrame窗口設(shè)置熱鍵的方法實(shí)現(xiàn)
使用了簡單的JFrame窗口,在窗口中添加菜單,菜單選項(xiàng),點(diǎn)擊鼠標(biāo)右鍵出現(xiàn)右鍵菜單,用io流將輸入文本域的內(nèi)容保存。并設(shè)置熱鍵alt+x為退出的熱鍵
public class MyNotepad extends JFrame{
//菜單欄
private JMenuBar jmb = new JMenuBar();
//菜單
private JMenu jmFile = new JMenu("文件(F)");
private JMenu jmEdit = new JMenu("編輯(E)");
private JMenu jmFormat = new JMenu("格式(O)");
private JMenu jmFind = new JMenu("查看(V)");
private JMenu jmHelp = new JMenu("幫助(H)");
//菜單項(xiàng)
private JMenuItem jmiNew = new JMenuItem("新建");
private JMenuItem jmiOpen = new JMenuItem("打開");
private JMenuItem jmiSave = new JMenuItem("保存");
private JMenuItem jmiOther = new JMenuItem("另存為");
private JMenuItem jmiExit = new JMenuItem("退出(X)");
private JCheckBoxMenuItem jmiAutoLine = new JCheckBoxMenuItem("自動換行");
private JMenuItem jmiFont = new JMenuItem("字體");
private JFileChooser jfc = new JFileChooser();
private JTextArea jta = new JTextArea();
private JScrollPane jsp = new JScrollPane(jta);
//上下文菜單
private JPopupMenu jpm = new JPopupMenu();
private JMenuItem jmiCopy = new JMenuItem("復(fù)制");
private JMenuItem jmiPaste = new JMenuItem("粘貼");
public MyNotepad() {
this.setTitle("記事本");
this.setSize(600,400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.add(jmb,BorderLayout.NORTH);
jmb.add(jmFile);
jmb.add(jmEdit);
jmb.add(jmFormat);
jmb.add(jmFind);
jmb.add(jmHelp);
jmFile.add(jmiNew);
jmFile.add(jmiOpen);
jmFile.add(jmiSave);
jmFile.add(jmiOther);
jmFile.addSeparator();
jmFile.add(jmiExit);
jmFormat.add(jmiAutoLine);
jmFormat.add(jmiFont);
//上下文菜單
jpm.add(jmiCopy);
jpm.add(jmiPaste);
jpm.add(jmFile);
jta.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(e.getButton() == 3){
jpm.show(jta, e.getX(), e.getY());
}
}
});
//文本域自動換行
this.add(jsp,BorderLayout.CENTER);
jmiAutoLine.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
boolean selected = jmiAutoLine.isSelected();
if(selected){
jta.setLineWrap(true);
}else{
jta.setLineWrap(false);
}
}
});
// 文件新建窗口
jmiNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int choose = jfc.showOpenDialog(MyNotepad.this);
switch (choose) {
case JFileChooser.APPROVE_OPTION:
System.out.println("點(diǎn)擊了打開");
break;
case JFileChooser.CANCEL_OPTION:
System.out.println("點(diǎn)擊了取消");
break;
}
}
});
//文件保存窗口,用隨機(jī)數(shù)命名文件名隨時(shí)保存進(jìn)新的文件
jmiSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
Random r = new Random();
int a = r.nextInt(100);
File file = new File("D:\\桌面\\b"+"r"+"a.txt");
try {
FileOutputStream fis = new FileOutputStream(file,true);
BufferedOutputStream bis = new BufferedOutputStream(fis);
byte [] b = jta.getText().getBytes();
try {
bis.write(b);
bis.flush();
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
jmiExit.registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_X,KeyEvent.ALT_DOWN_MASK),
JComponent.WHEN_IN_FOCUSED_WINDOW);//1.設(shè)置監(jiān)聽事件。2.設(shè)置熱鍵alt+x關(guān)閉窗口3.設(shè)置觸發(fā)當(dāng)鼠標(biāo)聚焦在窗口時(shí)
jmiExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
this.setVisible(true);
}
public static void main(String[] args) {
new MyNotepad();
}
}
效果如下:

到此這篇關(guān)于Java給JFrame窗口設(shè)置熱鍵的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java JFrame窗口熱鍵內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java Swing JLabel標(biāo)簽的使用方法
- Java編程swing組件JLabel詳解以及使用示例
- Java-JFrame窗體美化方式
- 超簡單的java獲取鼠標(biāo)點(diǎn)擊位置坐標(biāo)的實(shí)例(鼠標(biāo)在Jframe上的坐標(biāo))
- java通過JFrame做一個(gè)登錄系統(tǒng)的界面完整代碼示例
- Java圖形化界面設(shè)計(jì)之容器(JFrame)詳解
- java Swing JFrame框架類中setDefaultCloseOperation的參數(shù)含義與用法示例
- Java-JFrame-swing嵌套瀏覽器的具體步驟
- Java之JFrame輸出Helloworld實(shí)例
- Java圖形界面之JFrame,JLabel,JButton詳解
相關(guān)文章
Java實(shí)現(xiàn)的文件過濾代碼分享(按后輟過濾)
這篇文章主要介紹了Java實(shí)現(xiàn)的文件過濾代碼分享,本文通過后輟名過濾,代碼寫簡潔,容易看懂,需要的朋友可以參考下2014-07-07
解決mybatis三表連接查詢數(shù)據(jù)重復(fù)的問題
這篇文章主要介紹了解決mybatis三表連接查詢數(shù)據(jù)重復(fù)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級緩存的問題
Mybatis內(nèi)置的二級緩存在分布式環(huán)境下存在分布式問題,無法使用,但是我們可以整合Redis來實(shí)現(xiàn)分布式的二級緩存,這篇文章給大家介紹MyBatis Plus整合Redis實(shí)現(xiàn)分布式二級緩存,感興趣的朋友跟隨小編一起看看吧2023-11-11
Spring Cloud Zuul集成Swagger實(shí)現(xiàn)過程解析
這篇文章主要介紹了Spring Cloud Zuul集成Swagger實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Spring Cache與Redis結(jié)合的使用方式
這篇文章主要介紹了Spring Cache與Redis結(jié)合的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12

