如何在JList中,添加一个按钮.就是说JList的一行里面, 有一个JLabe, JTextField和JButton. 附有注释的用例

 我来答
百度网友9308069
推荐于2016-10-15 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1909万
展开全部

每一行都要JLabe, JTextField和JButton共3个元素,每一行有3套聚焦点。

等于要手工实现JList的JList—二维的JList

Java对这种情况预置了JTable。省去了重复发明轮子的过程

学和用JTable把。 

简写的代码可以实现一行三个,但没有实现聚焦系统。不实用。还是直接用JTable

import java.awt.Component;

import java.util.Vector;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JList;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.ListCellRenderer;

public class Test{

static public class Row extends JPanel {

private static final long serialVersionUID = 1234L;

public JLabel label;

public JButton button;

public JTextField field;

public Row(){

super();

label=new JLabel(); button=new JButton(); field=new JTextField();

add(label); add(field); add(button);

}

}

public static void main(String[] args) {

JFrame f=new JFrame("示例");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(640, 480);

Vector<Row> rows=new Vector<Row>();

for(int i=0;i<20;i++){

Row r=new Row();

r.button.setText("按钮"+i);

r.field.setText("文本框"+i);

r.label.setText("标签"+i);

rows.add(r);

}

JList<Row> l=new JList<Row>(rows);

l.setCellRenderer(new ListCellRenderer<Row>(){

@Override

public Component getListCellRendererComponent(

JList<? extends Row> list, Row value, int index,

boolean isSelected, boolean cellHasFocus) {

return value;

}

});

f.add(l);

f.setVisible(true);

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式