簡體   English   中英

我無法按特定順序將JButtons添加到JList

[英]I can't add JButtons to a JList in a specific order

我嘗試在JList中添加JButton就像一個棋盤游戲。

這是我的代碼:

public class Board {

public Board() {
    JList list = new JList();
    list.setLayout(new GridLayout(10, 10));
    list.setDragEnabled(true);

    Container container = new Container();
    JFrame frame = new JFrame();
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    frame.add(container);
    container.add(panel1);

    for (int j = 0; j < 99; j++) {
        list.add(createButton());
    }

    panel2.add(list);
    container.add(panel2);
    panel2.setLayout(new GridLayout());
    panel1.setBounds(50, 150, 150, 150);
    panel1.setBackground(Color.YELLOW);
    panel2.setBounds(650, 150, 500, 500);
    panel2.setBackground(Color.RED);

    frame.setSize(1366, 768);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

public JButton createButton() {
    JButton button = new JButton();
    button.setBackground(Color.BLUE);
    return button;
}
}

如果我重復100次,我會得到這個: 在此輸入圖像描述

如果我重復99次,我會得到這個:

在此輸入圖像描述

所以我的問題是如何填寫上面的板?

發生這種情況的原因是因為你要將所有按鈕添加到JList中,這實際上並不是你打算如何使用JList(通常你修改支持列表的模型以便從列表中添加/刪除項目)。 該列表在內部執行占用第一個插槽的內容。

如果您更改此行:

JList list = new JList();

至:

JPanel list = new JPanel();

您的布局將起作用(您還必須刪除setDragEnabled行,並將99更改為100)。 是否有一些你想要的JList功能我不確定,但這就是你的布局無法正常工作的原因。

你應該創建你的JList:

DefaultListModel dataModel = new DefaultListModel();
JList list = new JList(dataModel);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);

設置ListCellRenderer如下:

 final JButton button = createButton();
    list.setCellRenderer(new ListCellRenderer() {
             @Override
             public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                  return button;
             }
    });

按如下方式添加項目://無論您添加什么值,您將決定在渲染項目時需要哪些信息

    for (int j = 0; j < 99; j++) {
        dataModel.add(j, j); 
    }

並使用此示例: 如何創建自定義JList

編輯 :一些其他有用的參考: 拖放 在JList中拖放

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM