有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java,JList位置

我被卡在这里了,但我不能把布局中的列表移到左上角。我正试图用list.setLocation();将列表移到左上角,但这似乎不管用。谢谢大家!

public class JList_ extends JFrame {
    private JList list;
    private static String[] colorname = {"black", "blue", "red", "white"};
    private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED,
            Color.WHITE};

    public JList_() {
        super("titile");
        setLayout(new FlowLayout());

        list = new JList(colorname);
        list.setVisibleRowCount(10);
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        list.setLocation();

        add(new JScrollPane(list));


        list.addListSelectionListener(
                new ListSelectionListener() {
                    public void valueChanged(ListSelectionEvent event) {

                        getContentPane().setBackground(colors[list.getSelectedIndex()]);

                    }

                }

        );
    }
}    

共 (3) 个答案

  1. # 1 楼答案

    您可以对JFrame使用setLayout(null)。然后可以使用setBounds()方法根据需要在JFrame上的任何位置设置列表位置

  2. # 2 楼答案

    setLocation()函数将两个整数作为参数。trylist.setLocation(0,0)另一个重载函数将Point对象作为参数。它将零部件放置在父对象的指定位置

    另外,您正在将JList放置在JScrollPane中并将其添加到帧中。因此,请尝试为JScrollPane创建一个单独的对象,然后将其位置设置为0,0

    JScrollPane myScrollPane = new JScrollPane(list);
    add(myScrollPane);
    myScrollPane.setLocation(0,0);
    

    上面的代码片段应该适合您

  3. # 3 楼答案

    只需将布局中的路线设置为左侧

     layout.setAlignment(FlowLayout.LEFT);
    

    使用您的代码的完整工作示例:

    import java.awt.Color;
    import java.awt.FlowLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.ListSelectionModel;
    import javax.swing.SwingUtilities;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    public class ListLocation extends JFrame {
    
        private JList<String> list;
        private static String[] colorname = {"black", "blue", "red", "white"};
        private static Color[] colors = {Color.BLACK, Color.BLUE, Color.RED, Color.WHITE};
    
        public ListLocation() {
            super("title");
    
            FlowLayout layout = new FlowLayout();
            layout.setAlignment(FlowLayout.LEFT);
    
            list = new JList<String>(colorname);
            list.setVisibleRowCount(10);
            list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
            setLayout(layout);
            add(list);
    
            list.addListSelectionListener(
                    new ListSelectionListener() {
    
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    getContentPane().setBackground(colors[list.getSelectedIndex()]);
                }
            }
            );
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setSize(800, 800);
            setLocationRelativeTo(null);
    
            setVisible(true);
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    try {
                        new ListLocation();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
    

    有关How to Use FlowLayoutFlowLayout的详细信息