简体   繁体   中英

JList list items squashed

I've got my JList working, but only the first list item is its proper size. Everything else under it is squashed. I have searched all StackOverflow and haven't found much (getting it to work was all StackOverflow though)

package networks;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.*;

/**
 *
 * @author Matthew
 */
public class Networks extends JFrame implements ActionListener {

    private static JPanel container = new JPanel();
    private static JPanel graphPanel = new JPanel();
    private static JPanel content = new JPanel();
    private static JPanel buttons = new JPanel();
    private static Graphics2D g;
    private static JButton read = new JButton("Read");
    private static JButton breadth = new JButton("Breadth");
    private static JButton depth = new JButton("Depth");
    private String[] listModel = new String[10];
    private static JScrollPane scroller = new JScrollPane();
    private JList lists;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Networks networks = new Networks();
        networks.setVisible(true);
    }

    public Networks() {
        super("Station Networks");
        //Set up window and frames, buttons and lists
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
        content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
        content.setPreferredSize(new Dimension(260,300));
        buttons.setLayout(new BoxLayout(buttons, BoxLayout.X_AXIS));
        graphPanel.setPreferredSize(new Dimension(255,255));

        //Add default value, tester
        listModel[0] = "The station list is currently empty";
        lists = new JList(listModel);
        lists.setVisibleRowCount(5);
        scroller.setViewportView(lists);
        BufferedImage im = new BufferedImage(255,255,BufferedImage.TYPE_INT_RGB);
        g = im.createGraphics();

        //add listeners
        read.addActionListener(this);
        breadth.addActionListener(this);
        depth.addActionListener(this);

        //put it all togethe
        content.add(graphPanel);
        content.add(new Label("List"));
        content.add(scroller);
        buttons.add(read);
        buttons.add(breadth);
        buttons.add(depth);
        container.add(content);
        container.add(buttons);
        add(container);
        pack();
        setVisible(true);
    }

I have a function that later on adds list items. These items come in squashed. Is there a way to set size for the list items?

Don't use an array for the data. Your array contains null values, except for the first entry. The null entries are being rendered funny.

Instead use the DefaultListModel and add items directly to it:

DefaultList model = new DefaultListModel();
model.addElement( "line1" );
JList list = new JList( model );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM