关于JAVA中JLIST显示问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JAVA中JLIST显示问题相关的知识,希望对你有一定的参考价值。

新手编程,遍历出一年内所有日期后放入VECTOR再放入JLIST,问题是我怎么让JLIST显示当前日期,我获取到当前日期index,用JLIST.setSelctedIndex(index)方法,JLIST显示的还是索引为1的2012-1-1日,怎么办啊,求求各位大侠帮帮我吧!!我是百度新手也没多少分
再说简单点就是假设JLIST里面有十项,1,2,3,4..................10;怎么让JLIST显示时
显示的一项是4,而不是1;具体图片如上

package com.swing01;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.ButtonGroup;
import javax.swing.UIManager;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JRadioButton;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class JListTest extends JFrame
private static final long serialVersionUID = -8058544817222710208L;
//面板容器
private JPanel contentPane;
//列表
private JList list;
//滚动条
private JScrollPane scrollPane;

/**
* Launch the application.
*/
public static void main(String[] args)
try
//皮肤
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
catch (Throwable e)
e.printStackTrace();

EventQueue.invokeLater(new Runnable()
public void run()
try
JListTest frame = new JListTest();
frame.setVisible(true);
catch (Exception e)
e.printStackTrace();


);


/**
* Create the frame.
*/
public JListTest()
addWindowListener(new WindowAdapter()
@Override
public void windowActivated(WindowEvent e)
do_this_windowActivated(e);

);
//标题
setTitle("选择列表的显示方式");
//退出时关闭虚拟机
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//大小及显示位置
setBounds(100, 100, 450, 200);
//面板
contentPane = new JPanel();
//设置面板的边框
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
//设置面板的布局格式
contentPane.setLayout(new BorderLayout(0, 0));
//把面板加入到窗体中
setContentPane(contentPane);
//创建面板
JPanel panel = new JPanel();
//最大的面板将panel加入进来设置到南面
contentPane.add(panel, BorderLayout.SOUTH);
//单选框
JRadioButton radioButton1 = new JRadioButton("水平显示 ");
//为单选框添加事件
radioButton1.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
do_radioButton1_actionPerformed(e);

);
//为单选按钮设置字体及大小
radioButton1.setFont(new Font("微软雅黑", Font.PLAIN, 14));
//面板添加按钮
panel.add(radioButton1);
//单选按钮2
JRadioButton radioButton2 = new JRadioButton("垂直显示");
//为单选按钮添加事件
radioButton2.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
do_radioButton2_actionPerformed(e);

);
//为单选按钮设置字体
radioButton2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
//把我们的单选按钮加入到我们的面板中
panel.add(radioButton2);
//单选按钮3创建
JRadioButton radioButton3 = new JRadioButton("垂直排列 ");
//为单选按钮添加事件
radioButton3.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
do_radioButton3_actionPerformed(e);

);
//为创建单按钮设置字体
radioButton3.setFont(new Font("微软雅黑", Font.PLAIN, 14));
//把单选按钮3加入到我们的面板中
panel.add(radioButton3);
//创建按钮组
ButtonGroup group = new ButtonGroup();
//把三个单选按钮加入到我们的按钮中
group.add(radioButton1);
group.add(radioButton2);
group.add(radioButton3);
//滚动条
scrollPane = new JScrollPane();
//最大的容器添加滚动条,设置放到中间显示位置
contentPane.add(scrollPane, BorderLayout.CENTER);
//列表
list = new JList();
//设置列表显示3个
list.setVisibleRowCount(3);
//设置列表的字体
list.setFont(new Font("微软雅黑", Font.PLAIN, 16));
//把列表加入到我们的滚条中
scrollPane.setViewportView(list);

//窗体加载事件
protected void do_this_windowActivated(WindowEvent e)
//定义一个字符串数组
String[] listData = new String[12];
//我们的数组添加内容
for(int i=0;i<listData.length;i++)
listData[i] = "力天教育"+(i+1);

//根据一个 object 数组构造 ListModel,然后对其应用 setModel
list.setListData(listData);

protected void do_radioButton1_actionPerformed(ActionEvent e)
// 定义布置列表单元的方式 指示“报纸样式”,单元按先横向后纵向流动。
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
//更新界面
scrollPane.revalidate();

protected void do_radioButton2_actionPerformed(ActionEvent e)
// 指示默认布局:一列单元。
list.setLayoutOrientation(JList.VERTICAL);
//更新界面
scrollPane.revalidate();

protected void do_radioButton3_actionPerformed(ActionEvent e)
//指示“报纸样式”布局,单元按先纵向后横向流动。
list.setLayoutOrientation(JList.VERTICAL_WRAP);
//更新界面
scrollPane.revalidate();



株洲科技IT教育:刘力天
参考技术A 你这个问题是说
用JLIST.setSelctedIndex(index)方法,没有办法设置选择项吗?
下边有段简单的代码,希望对你有帮助。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JButton;

public class JListTest extends JFrame implements ActionListener

private String pattern = "selected 0";
private int len = 5;
private JButton btnNewButton = null;
private int index = 0;
private JList list = null;

public JListTest()

setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(400, 300);
setResizable(false);
getContentPane().setLayout(null);

DefaultListModel listModel1 = new DefaultListModel();

list = new JList(listModel1);
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 1; i <= len; i++)
calendar.set(Calendar.DATE, i);
listModel1.addElement(sdf.format(calendar.getTime()));

list.setSelectedIndex(5);
list.setBounds(23, 10, 127, 240);
getContentPane().add(list);

btnNewButton = new JButton(getBtnName());
btnNewButton.setBounds(162, 7, 148, 21);
btnNewButton.addActionListener(this);
getContentPane().add(btnNewButton);
setVisible(true);


private String getBtnName()
int random = (int) (Math.random() * 1000);
index = random % len;
System.out.println(index);
return MessageFormat.format(pattern, index);


public static void main(String[] args)
new JListTest();


public void actionPerformed(ActionEvent e)
list.setSelectedIndex(index);
btnNewButton.setText(getBtnName());

参考技术B 如下,把index设置为下面的值.
Calendar c1 = Calendar.getInstance();
c1.setTime(new Date());
int index = c1.get(Calendar.DAY_OF_YEAR); //获取今天是一年中的哪一天。
参考技术C 使用JList.setSelectedValue(obj, true);
setSelctedIndex只是选中了某记录,而没有将该记录调整到可见

以上是关于关于JAVA中JLIST显示问题的主要内容,如果未能解决你的问题,请参考以下文章

java新手求助-急急急-关于向JList中添加元素

Java如何刷新jlist中的sql结果

Java swing弹出菜单和jlist

java 中的那个Jlist怎么才能显示东西

如何在 JList 中显示数组列表?

查找 JList 的选中项并实时显示