JList滚动条问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:00:14
回答正确追加五十分
在数据长度超过JList高度时如何让滚动条自动下拉,从而显示最新添加到末尾的数据

import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class JListTest1 extends JFrame{
JList list;
JScrollPane pane;
Vector data;
JTextField text;
JListTest1()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 400);
data = new Vector();
list = new JList();
pane = new JScrollPane(list);
text = new JTextField();
this.add(text, BorderLayout.SOUTH);
this.add(pane, BorderLayout.CENTER);
text.addKeyListener(new KeyListener(){

public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
data.insertElementAt(text.getText(), data.size());
list.setListData(data);
}
}

顺带给你装饰器和模型的示例.你原先代码里太啰嗦了,要尽量把变量作用范围缩小.
认为代码可接受,请加分 80

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
final public class JListTest1 extends JFrame {
private JList jlist;
private JTextField text;
private JScrollPane scrollPane;
private DefaultListModel listModel=new DefaultListModel();

public JListTest1() {
jlist = new JList(listModel);
jlist.setCellRenderer(new ListRenderer());
add(text = new JTextField(), BorderLayout.SOUTH);
add(scrollPane=new JScrollPane(jlist), BorderLayout.CENTER);
text.addKeyListener(new TextKeyAdapter());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setVisible(true);
}

private class TextKeyAdapter extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.