每一行都要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=0i<20i++){
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)
}
}
你 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++ //每次单击一次按钮 添加一个元素
package testimport java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.DefaultListModel
import javax.swing.JButton
import javax.swing.JList
import javax.swing.WindowConstants
public class ListFrame extends javax.swing.JFrame {
private JList jList1
private JButton jButton1
private JButton jButton2
private JList jList2
private DefaultListModel listModel1
private DefaultListModel listModel2
private JButton jButton4
private JButton jButton3
{
//Set Look &Feel
try {
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")
} catch(Exception e) {
e.printStackTrace()
}
}
/**
* Auto-generated main method to display this JFrame
*/
public static void main(String[] args) {
ListFrame inst = new ListFrame()
inst.setVisible(true)
}
public ListFrame() {
super()
initGUI()
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
getContentPane().setLayout(null)
{
listModel1 = new DefaultListModel()
listModel1.addElement("item 1")
listModel1.addElement("item 2")
listModel1.addElement("item 3")
listModel1.addElement("item 4")
listModel1.addElement("item 5")
listModel1.addElement("item 6")
jList1 = new JList(listModel1)
getContentPane().add(jList1)
jList1.setBounds(42, 28, 119, 203)
}
{
listModel2 = new DefaultListModel()
jList2 = new JList(listModel2)
getContentPane().add(jList2)
jList2.setBounds(238, 28, 119, 196)
}
{
jButton1 = new JButton()
getContentPane().add(jButton1)
jButton1.setText(">")
jButton1.setBounds(168, 84, 63, 28)
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1ActionPerformed(evt)
}
})
}
{
jButton2 = new JButton()
getContentPane().add(jButton2)
jButton2.setText("<")
jButton2.setBounds(168, 133, 63, 28)
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton2ActionPerformed(evt)
}
})
}
{
jButton3 = new JButton()
getContentPane().add(jButton3)
jButton3.setText("添加")
jButton3.setBounds(168, 35, 63, 28)
jButton3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton3ActionPerformed(evt)
}
})
}
{
jButton4 = new JButton()
getContentPane().add(jButton4)
jButton4.setText("删除")
jButton4.setBounds(168, 189, 63, 28)
jButton4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton4ActionPerformed(evt)
}
})
}
pack()
setSize(400, 300)
setLocationRelativeTo(null)
} catch (Exception e) {
e.printStackTrace()
}
}
/** jList1移动到jList2*/
private void jButton1ActionPerformed(ActionEvent evt) {
if(jList1.getSelectedIndex()!=-1){
listModel2.addElement(jList1.getSelectedValue())
int i=jList1.getSelectedIndex()
listModel1.remove(i)
jList1.setSelectedIndex(i>0? i-1:0)
jList2.setSelectedIndex(listModel2.size()-1)
}
}
/** jList2移动到jList1*/
private void jButton2ActionPerformed(ActionEvent evt) {
if(jList2.getSelectedIndex()!=-1){
listModel1.addElement(jList2.getSelectedValue())
int i=jList2.getSelectedIndex()
listModel2.remove(i)
jList2.setSelectedIndex(i>0? i-1:0)
}
}
/** jList1增加项*/
private void jButton3ActionPerformed(ActionEvent evt) {
listModel1.addElement("new item")
}
/** jList1删除项*/
private void jButton4ActionPerformed(ActionEvent evt) {
if(jList1.getSelectedIndex()!=-1){
listModel1.remove(jList1.getSelectedIndex())
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)