欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

swing jtextArea滚动条和文字缩放效果

程序员文章站 2024-02-10 11:07:28
本文实例为大家分享了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(); 
  } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。