不用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/zh-hant/n/317620.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KBGJT的頭像KBGJT
上一篇 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

發表回復

登錄後才能評論