ham*_*mid 2 java swing event-handling mouseevent

文本在里面JPanels,它们都在里面JScrollPane.我已设置捕捉MouseWheelEvent(滚动)所以当Ctrl按下键,并且转动鼠标滚轮时,文本将放大/缩小(字体大小增加/减少).这导致无法再滚动字体列表,除非我将鼠标光标直接指向滚动条.我想知道是否有办法return当事件Ctrl关键是不按住.那可能吗?我浏览了MouseWheelEventapi并没有找到任何有用的东西.谷歌搜索也没有给我任何东西.
如果我确实理解了你正在寻找的答案应该是这样的主要想法,为你的表单和你的滚动窗格创建不同的鼠标滚轮事件.观看整个动画,你会发现你的问题已得到修复,你可以根据这个想法进行操作

你应该在下面添加到你的领域;
public int defaultTextSize = 12;
boolean ctrlcheck =false;
Run Code Online (Sandbox Code Playgroud)
这是jLabel4显示CTRL未在构造函数中按下
jLabel4.setText("CTRL IS NOT PRESSED");
Run Code Online (Sandbox Code Playgroud)
你的滚动窗格鼠标事件应该是这样的
private void jScrollPane1MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
int notches = evt.getWheelRotation();
if (notches < 0) {
if (ctrlcheck == true) {
defaultTextSize = defaultTextSize + 3;
Font zoomfont = new Font("Monospaced", Font.PLAIN, defaultTextSize);
jLabel1.setFont(zoomfont);
jLabel2.setFont(zoomfont);
jLabel3.setFont(zoomfont);
jLabel1.repaint();
jLabel2.repaint();
jLabel3.repaint();
} else {
System.out.println("CTRL IS NOT PRESSED");
}
} else {
if (ctrlcheck == true) {
defaultTextSize = defaultTextSize - 3;
Font zoomfont2 = new Font("Monospaced", Font.ITALIC, defaultTextSize);
jLabel1.setFont(zoomfont2);
jLabel2.setFont(zoomfont2);
jLabel3.setFont(zoomfont2);
jLabel1.repaint();
jLabel2.repaint();
jLabel3.repaint();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你需要FORM Key Released Event这样的
private void formKeyReleased(java.awt.event.KeyEvent evt) {
jLabel4.setText("CTRL IS NOT PRESSED");
ctrlcheck = false;
}
Run Code Online (Sandbox Code Playgroud)
formMouseWheelMoved需要单独的事件
private void formMouseWheelMoved(java.awt.event.MouseWheelEvent evt) {
int notches = evt.getWheelRotation();
if (notches < 0) {
if (ctrlcheck == true) {
defaultTextSize = defaultTextSize + 3;
Font zoomfont = new Font("Monospaced", Font.PLAIN, defaultTextSize);
jLabel1.setFont(zoomfont);
jLabel2.setFont(zoomfont);
jLabel3.setFont(zoomfont);
jLabel1.repaint();
jLabel2.repaint();
jLabel3.repaint();
} else {
System.out.println("CTRL IS NOT PRESSED");
}
} else {
if (ctrlcheck == true) {
defaultTextSize = defaultTextSize - 3;
Font zoomfont2 = new Font("Monospaced", Font.ITALIC, defaultTextSize);
jLabel1.setFont(zoomfont2);
jLabel2.setFont(zoomfont2);
jLabel3.setFont(zoomfont2);
jLabel1.repaint();
jLabel2.repaint();
jLabel3.repaint();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还需要表单按键事件以检查按键是否仍然按下
private void formKeyPressed(java.awt.event.KeyEvent evt) {
int key = evt.getKeyCode();
if (key == KeyEvent.VK_CONTROL) {
jLabel4.setText("CTRL IS PRESSED");
ctrlcheck = true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |