swing jtextArea滚动条和文字缩放效果
程序员文章站
2023-12-16 15:38:46
本文实例为大家分享了swing jtextarea滚动条和文字缩放的具体代码,供大家参考,具体内容如下
当加了滚动条的jtextarea添加滚动事件比如缩放ctrl+wh...
本文实例为大家分享了swing jtextarea滚动条和文字缩放的具体代码,供大家参考,具体内容如下
当加了滚动条的jtextarea添加滚动事件比如缩放ctrl+wheel时,添加的滚动事件和滚动缩放事件会重合,如何让这两个事件同时发生而不会相互干扰呢,也就是滚动条放大缩小时文本不会发生上下滚动。
import javax.swing.*; import java.awt.*; import java.awt.event.mouseadapter; import java.awt.event.mousewheelevent; import java.awt.event.mousewheellistener; public class jtawheel { jframe jf; jtextarea jta; jscrollpane jsp; mousewheellistener syswheel; public jtawheel(){ jf = new jframe("滚动缩放"); jf.setbounds(500,500,600,400); jta = new jtextarea(); jsp = new jscrollpane(jta,jscrollpane.vertical_scrollbar_as_needed, jscrollpane.horizontal_scrollbar_as_needed); syswheel = jsp.getmousewheellisteners()[0];//得到系统滚动事件 jsp.removemousewheellistener(syswheel);//移除系统滚动,需要时添加 jsp.addmousewheellistener(new event()); jf.add(jsp); jf.setdefaultcloseoperation(jframe.exit_on_close); jf.setvisible(true); } private class event extends mouseadapter{ @override public void mousewheelmoved(mousewheelevent e){ if(e.iscontroldown()){//当ctrl键被按下,滚动为放大缩小 font f = jta.getfont(); if(e.getwheelrotation()<0){//如果滚动条向前就放大文本 jta.setfont(new font(f.getfamily(),f.getstyle(),f.getsize()+1)); }else if(e.getwheelrotation()>0){//滚动条向后就缩小文本 jta.setfont(new font(f.getfamily(),f.getstyle(),f.getsize()-1)); } }else{//当ctrl没有被按下,则为系统滚动 jsp.addmousewheellistener(syswheel); syswheel.mousewheelmoved(e);//触发系统滚动事件。 jsp.removemousewheellistener(syswheel); } } } public static void main(string[] args){ new jtawheel(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。