如何将JLabel加入JList中

如何将JLabel加入JList中,第1张

你用System.out.println(((JLabel)(jList.getModel().getElementAt(index))).getText())就能打印出JLabel中的字符了。

默认的就是JLabel了。

如果你要该我给你一个样板。

public class myList extends JPanel {

private static final long serialVersionUID = 1L

JList mList

DefaultListModel mode

public myList() {

setLayout(new BorderLayout())

mode = new DefaultListModel()

for (int i = 0i <10i++) {

mode.addElement("123")

}

mList = new JList(mode)

mList.setCellRenderer(new MyCellRenderer())

add(new JScrollPane(mList), BorderLayout.CENTER)

}

public static void main(String[] args) {

JFrame jf = new JFrame()

jf.add(new myList(), BorderLayout.CENTER)

jf.pack()

jf.setVisible(true)

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

class MyCellRenderer extends JButton implements ListCellRenderer {

public MyCellRenderer() {

setOpaque(true)

}

public Component getListCellRendererComponent(JList list,

Object value,

int index,

boolean isSelected,

boolean cellHasFocus) {

setText(value.toString())

Color background

Color foreground

// check if this cell represents the current DnD drop location

JList.DropLocation dropLocation = list.getDropLocation()

if (dropLocation != null &&!dropLocation.isInsert() &&dropLocation.getIndex() == index) {

background = Color.BLUE

foreground = Color.WHITE

// check if this cell is selected

} else if (isSelected) {

background = Color.RED

foreground = Color.WHITE

// unselected, and not the DnD drop location

} else {

background = Color.WHITE

foreground = Color.BLACK

}

setBackground(background)

setForeground(foreground)

return this

}

}

}

listCellRenderer是控制显示的,我这里是button,你也可以换成别的,不建议使用jPanel,panel无法显示字体,所以你要自己弄个控件显示。

Model只负责保存数据,和界面无关,不要把界面也放到这里了。

你 new 出来的对象不是同一个对象

这种情况不是向List中添加多个元素,而是你在容器中生成了多个List

一个对象只能New一次,在此的话就不是同一个对象了

你想要显示多个元素。 直接把元素放在数组中 ,只写一句

Jlist jlist=new Jlist(a)就把jlist添加到窗体中就Ok了

如果你把Jlist jlist=new Jlist(a)这句话放在 按钮事件中,你试想下,你每次按下后,都要执行Jlist jlist=new Jlist(a)这句话,我们是不是创建了多个对象那?如果你只是单纯的想通过按钮来添加数组中的元素

Jlist jlist=new Jlist()//定义成为类成员 放在按钮事件的外部

int i=0 //定义成为类成员 放在按钮事件的外部

按钮事件中代码可以这么写

jlist.add(a[i])

i++ //每次单击一次按钮 添加一个元素


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11541144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存