Java:Jswing:Jlist

Java:Jswing:Jlist,java,swing,jlist,Java,Swing,Jlist,当我向Jlist输入名称时,名称会输出到列表的下半部分,如何将名称设置到窗口顶部 package Gui; //import java.awt.BorderLayout; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class GUI implements ActionLi

当我向Jlist输入名称时,名称会输出到列表的下半部分,如何将名称设置到窗口顶部

package Gui;

//import java.awt.BorderLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class GUI implements ActionListener {

    JButton button;
    JTextField field;
    JList list;
    JTextField name1;
    DefaultListModel listModel;
    String name;

    public GUI(){
        listModel = new DefaultListModel();
        listModel.addElement(null);
        listModel.setSize(1);

        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        field = new JTextField("Enter Name", 10);
        button = new JButton("Click");
        list = new JList(listModel);        

        list.setBorder(BorderFactory.createEmptyBorder(120, 20, 20, 120));


        JScrollPane listScrollPane = new JScrollPane(list);

        panel.add(listScrollPane);
        listScrollPane.setWheelScrollingEnabled(true);

        panel.add(button);
        panel.add(field);

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);

        button.addActionListener(this);

        }


    public void actionPerformed(ActionEvent arg0) {
        if(arg0.getSource() == button)
            name = field.getText();
        listModel.addElement(name);
    }
}

您可以简单地使用
add(0,object)
方法

listModel.addElement(名称)
,而不是
listModel.add(0,名称)
将名称添加到列表顶部

对于JList的大小,不应使用此边框,而应为JSCrollPane选择首选大小:

package Gui;
...    
import java.awt.Dimension;

public class GUI implements ActionListener {

    ...    
    public GUI(){
        ...
        list = new JList(listModel);

        JScrollPane listScrollPane = new JScrollPane(list);
        listScrollPane.setPreferredSize(new Dimension(100, 240));

        panel.add(listScrollPane);
        ...
    }

    public void actionPerformed(ActionEvent arg0) {
        if(arg0.getSource() == button)
            name = field.getText();
        listModel.add(0, name);
    }
}

资源:


您可以简单地使用
add(0,object)
方法

listModel.addElement(名称)
,而不是
listModel.add(0,名称)
将名称添加到列表顶部

对于JList的大小,不应使用此边框,而应为JSCrollPane选择首选大小:

package Gui;
...    
import java.awt.Dimension;

public class GUI implements ActionListener {

    ...    
    public GUI(){
        ...
        list = new JList(listModel);

        JScrollPane listScrollPane = new JScrollPane(list);
        listScrollPane.setPreferredSize(new Dimension(100, 240));

        panel.add(listScrollPane);
        ...
    }

    public void actionPerformed(ActionEvent arg0) {
        if(arg0.getSource() == button)
            name = field.getText();
        listModel.add(0, name);
    }
}

资源:


等等。。。是否要更改应用程序的标题栏???否,当我输入名称时,我希望名称输出到窗口的左上角,但由于某些原因,它会被发送到底部等待。。。你想更改应用程序的标题栏吗???不,当我输入名称时,我想将名称输出到窗口的左上角,但由于某种原因,它会被发送到底部。这样做会更好,但仍然不会在top@Ethan,元素不是在列表的顶部吗?或者你是说别的什么?不,比如当我运行这个程序时,我输入的名字会被发送到窗口的最底部好吧,这样会更好,但是当你运行这个程序时,当你输入一个名字时,你的名字会显示在哪里?我的问题正在解决。你是否删除了
列表。setboorder()
?它使它变得更好了,但仍然没有达到预期效果top@Ethan,元素不是在列表的顶部吗?或者你是说别的什么?不,比如当我运行这个程序时,我输入的名字会被发送到窗口的最底部好吧,这样会更好,但是当你运行这个程序时,当你输入一个名字时,你的名字会显示在哪里?我的正在运行。您是否删除了
列表。setboorder()