不用java的垂直滚动看板(不用java的垂直滚动看板怎么用)

本文目录一览:

android垂直TextView怎么能让它自动滚动

这是跑马灯的效果。实现该功能步骤:

1、自定义Views,继承自TextView。

2、重写onDrow方法,计算每次的滚动的距离。

3、计算view的Y轴的重点,让当前显示的处于高亮显示状态。

4、定时的刷新View使其界面不断的刷先,出现滚动的效果。

5、实现数据结构,将数据传给view。

几个步骤代码可以参考下面

下面看看主要代码:

1、创建一个类继承TextView

/**

 * @author xushilin

 * 

 * 垂直滚动的TextView Widget

 */

public class VerticalScrollTextView extends TextView

 

2、实现构造函数:

public VerticalScrollTextView(Context context) {

super(context);

init();

}

public VerticalScrollTextView(Context context, AttributeSet attr) {

super(context, attr);

init();

}

public VerticalScrollTextView(Context context, AttributeSet attr, int i) {

super(context, attr, i);

init();

}

private void init() {

setFocusable(true);

//这里主要处理如果没有传入内容显示的默认值

if(list==null){

list=new ArrayListNotice();

Notice sen=new Notice(0,”暂时没有通知公告”);

list.add(0, sen);

}

//普通文字的字号,以及画笔颜色的设置

mPaint = new Paint();

mPaint.setAntiAlias(true);

mPaint.setTextSize(16);

mPaint.setColor(Color.BLACK);

mPaint.setTypeface(Typeface.SERIF);

//高亮文字的字号,以及画笔颜色的设置

mPathPaint = new Paint();

mPathPaint.setAntiAlias(true);

mPathPaint.setColor(Color.RED);

mPathPaint.setTextSize(16);

mPathPaint.setTypeface(Typeface.SANS_SERIF);

}

 

3、从写onDraw方法,并计算文字的行距,并且将将普通文字和高亮文字,在这个方法中绘制出来

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(0xEFeffff);

Paint p = mPaint;

Paint p2 = mPathPaint;

p.setTextAlign(Paint.Align.CENTER);

if (index == -1)

return;

p2.setTextAlign(Paint.Align.CENTER);

canvas.drawText(list.get(index).getName(), mX, middleY, p2);

float tempY = middleY;

for (int i = index – 1; i = 0; i–) {

tempY = tempY – DY;

if (tempY  0) {

break;

}

canvas.drawText(list.get(i).getName(), mX, tempY, p);

}

tempY = middleY;

for (int i = index + 1; i  list.size(); i++) {

tempY = tempY + DY;

if (tempY  mY) {

break;

}

canvas.drawText(list.get(i).getName(), mX, tempY, p);

}

}

4、计算Y轴中值以及更新索引

protected void onSizeChanged(int w, int h, int ow, int oh) {

super.onSizeChanged(w, h, ow, oh);

mX = w * 0.5f; 

mY = h;

middleY = h * 0.5f;

}

private long updateIndex(int index) {

if (index == -1)

return -1;

this.index=index;

return index;

}

 

5、定时更新view,并将接口暴露给客户程序调用。

public void updateUI(){

new Thread(new updateThread()).start();

}

class updateThread implements Runnable {

long time = 1000;

int i=0;

public void run() {

while (true) {

long sleeptime = updateIndex(i);

time += sleeptime;

mHandler.post(mUpdateResults);

if (sleeptime == -1)

return;

try {

Thread.sleep(time);

i++;

if(i==getList().size())

i=0;

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

Handler mHandler = new Handler();

Runnable mUpdateResults = new Runnable() {

public void run() {

invalidate(); 

}

};

 

6、xml布局文件中调用:

?xml version=”1.0″ encoding=”utf-8″?   

!– Demonstrates scrolling with a ScrollView. —   

LinearLayout xmlns:android=””  

    android:layout_width=”fill_parent”  

    android:layout_height=”fill_parent”  

    android:orientation=”vertical”

    com.demo.xsl.text.SampleView      

        android:id=”@+id/sampleView1″

        android:layout_width=”fill_parent”

        android:layout_height=”fill_parent”

        android:background=”@drawable/selector”

       /    

/LinearLayout

7、java代码中调用,传递数据:

package com.demo.xsl.text;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

public class VerticalScrollTextActivity extends Activity {

SampleView mSampleView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

mSampleView = (SampleView) findViewById(R.id.sampleView1);

List lst=new ArrayListSentence();

for(int i=0;i30;i++){

if(i%2==0){

Sentence sen=new Sentence(i,i+”、金球奖三甲揭晓 C罗梅西哈维入围 “);

lst.add(i, sen);

}else{

Sentence sen=new Sentence(i,i+”、公牛欲用三大主力换魔兽?????”);

lst.add(i, sen);

}

}

//给View传递数据

mSampleView.setList(lst);

//更新View

mSampleView.updateUI();

}

}

java怎样设置表格滚动条

用swing类里的JScrollPane实现

JScrollPane(Component view,int vsbPolicy,int hsbPolicy)

创建一个 JScrollPane,它将视图组件显示在一个视口中,视图位置可使用一对滚动条控制。滚动条策略指定滚动条在何时显示,例如,如果 vsbPolicy 为 VERTICAL_SCROLLBAR_AS_NEEDED,则只有在垂直查看无法完全显示时,垂直滚动条才显示。可用的策略设定在

setVerticalScrollBarPolicy(int) 和 setHorizontalScrollBarPolicy(int) 中列出。

参数:

view – 将显示在滚动窗格视口中的组件

vsbPolicy – 指定垂直滚动条策略的一个整数

hsbPolicy – 指定水平滚动条策略的一个整数

JScrollPane scrollPane = new JScrollPane(你要添加的表格,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED ,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER

)

Android中TextView如何实现水平和垂直滚动

殇 殇雲的专栏 雲的专栏软件开发 软件开发一 一、只想让TextView显示一行,但是文字超过 、只想让TextView显示一行,但是文字超过在开头显示省略号android:singleLine=”true”android:ellipsize=”start”在结尾显示省略号android:singleLine=”true”android:ellipsize=”end”在中间显示省略号android:singleLine=”true”android:ellipsize=”middle”横向自动滚动(跑马灯效果)android:singleLine=”true”android:ellipsize=”marquee”android:marqueeRepeatLimit=”marquee_forever”android:focusable=”true”android:focusableInTouchMode=”true”以上4个效果都要加上�0�2android:singleLine=”true”,因为TextView默认是会自动换行的android:marqueeRepeatLimit=”marquee_forever”是设置永远重复,当然你也可以设置具体的数字android:focusable=”true”和android:focusableInTouchMode=”true”一定要加上,不然滚动效果出不来在Java代码中加入下面一句话就可以实现垂直滚动

java 添加一个竖滚动条

滚动条使用类似于下面的代码创建:

redSlider=new Scrollbar(Scrollbar.VERTICAL, 0, 1, 0, 255);

add(redSlider);

当用户改变滚动条的值时,滚动条接收一个 AdjustmentEvent 实例。滚动条处理此事件,将它传递给所有已注册的侦听器。

任何希望滚动条值发生变化时被通知的对象都应该实现包 java.awt.event 中定义的 AdjustmentListener接口。调用 addAdjustmentListener 和 removeAdjustmentListener 方法能动态地添加或删除侦听器。

AdjustmentEvent 类定义了五种调整事件,如下所示:

当用户拖动滚动条的滑动块时,发送 AdjustmentEvent.TRACK。

当用户单击水平滚动条的左箭头或垂直滚动条的上箭头,或从键盘做出等效动作时,发送AdjustmentEvent.UNIT_INCREMENT。

当用户单击水平滚动条的右箭头或垂直滚动条的下箭头,或从键盘做出等效动作时,发送AdjustmentEvent.UNIT_DECREMENT。

当用户单击水平滚动条滑动块左边的轨道,或垂直滚动条滑动块上边的轨道时,发送AdjustmentEvent.BLOCK_INCREMENT。按照惯例,如果用户使用定义了 Page Up 键的键盘,则Page Up 键是等效的。

当用户单击水平滚动条滑动块右边的轨道,或垂直滚动条滑动块下边的轨道时,发送AdjustmentEvent.BLOCK_DECREMENT。按照惯例,如果用户使用定义了 Page Down 键的键盘,则Page Down 键是等效的。

Java swing 如何让垂直滚动条始终在最下面

实现:

(1)设置JTextPane 的策略

DefaultCaret caret = (DefaultCaret)resultTextPane.getCaret();

caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

(2)当JTextPane 动态增加内容时

resultTextPane.setSelectionStart(resultTextPane.getText().length());

JScrollBar vertical = scrollPane.getVerticalScrollBar();

vertical.setValue( vertical.getMaximum());

说明:

(1)resultTextPane 的类型是JTextPane;

(2)JTextPane和JTextArea的区别:

JTextPane 可以设置html样式;

JTextArea无法设置成为html样式

JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行

JTextArea经常和JScrollPane 搭配使用.  这样可以通过滚动条显示更多的内容.

如果要使文本域显示最后1行, 有2种方式:

第一种方式:

操控垂直滚动条, 把垂直滚动条移动到最后面即可

JTextArea jta = new JTextArea();

jta.setText(“添加很多行的文字”);

JScrollPane jsp = new JScrollPane(jta);

jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());//控制垂直滚动条到最后面

第二种方式:

操作文本域, 把文本域的位置设置到文本的最后.并让文本域获得焦点即可

JTextArea jta = new JTextArea();

jta.setText(“添加很多行的文字”);

JScrollPane jsp = new JScrollPane(jta);

//下面的代码就是移动到文本域的最后面

jta.selectAll();

if (jta.getSelectedText() != null) {

jta.setCaretPosition(jta.getSelectedText().length());

jta.requestFocus();

}

完整的代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class JTPDemo extends JFrame implements ActionListener {

JTextArea jta;

JButton jbHome;

JButton jbEnd;

JScrollPane jsp;

final String NEW_LINE =System.getProperty(“line.separator”);

public JTPDemo() {

jbHome = new JButton(“开始位置”);

jbHome.addActionListener(this);

jbEnd = new JButton(“最后一行”);

jbEnd.addActionListener(this);

JPanel jpsouth = new JPanel();

jpsouth.add(jbHome);

jpsouth.add(jbEnd);

add(jpsouth, BorderLayout.SOUTH);

jta = new JTextArea();

jta.setLineWrap(true);

jta.append(“开始”+NEW_LINE);

for (int i = 1; i  50; i++) {

jta.append(i+NEW_LINE);

}

jta.append(“最后一行”);

jsp =new JScrollPane(jta);

add(jsp);

setTitle(“文本域测试”);

setSize(360, 320);

setLocationRelativeTo(null);//窗口居中

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public static void main(String[] args) {

new JTPDemo();

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == jbHome) {//跳到开始的位置

jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMinimum());

// jta.setCaretPosition(0);

// jta.requestFocus();

} else if (e.getSource() == jbEnd) {//跳到最后一行的位置

jsp.getVerticalScrollBar().setValue(jsp.getVerticalScrollBar().getMaximum());

// jta.selectAll();

// if (jta.getSelectedText() != null) {

// jta.setCaretPosition(jta.getSelectedText().length());

// jta.requestFocus();

// }

}

}

}

效果图

原创文章,作者:KBGJT,如若转载,请注明出处:https://www.506064.com/n/317620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
KBGJTKBGJT
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论