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

如题所述

每一行都要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);

}

}

温馨提示:内容为网友见解,仅供参考
无其他回答

...有一个JLabe, JTextField和JButton. 附有注释的用例
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(...

相似回答