为集合中的每个项创建 Swing GUI 元素 - JAVA



如果我有一个对象集合:

public class Party {
    LinkedList<Guy> partyList = new LinkedList<Guy>();
    public void addGuy(Guy c) {
        partyList.add(c);
    }
}

和一个选项卡式窗格:

public class CharWindow
{
private JFrame  frame;
/**
 * Launch the application.
 */
public static void main(String[] args)
{
    EventQueue.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            try
            {
                CharWindow window = new CharWindow();
                window.frame.setVisible(true);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    });
}
/**
 * Create the application.
 */
public CharWindow()
{
    initialize();
}
/**
 * Initialize the contents of the frame.
 */
private void initialize()
{
    frame = new JFrame();
    frame.setBounds(100, 100, 727, 549);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JTabbedPane tabbedPane = new JTabbedPane(SwingConstants.TOP);
    frame.getContentPane().add(tabbedPane, BorderLayout.CENTER);
    JTabbedPane PartyScreen = new JTabbedPane(SwingConstants.TOP);
    tabbedPane.addTab("Party Screen", null, PartyScreen, null);
    JTabbedPane tabbedPane_2 = new JTabbedPane(SwingConstants.TOP);
    tabbedPane.addTab("New tab", null, tabbedPane_2, null);
    JTabbedPane tabbedPane_3 = new JTabbedPane(SwingConstants.TOP);
    tabbedPane.addTab("New tab", null, tabbedPane_3, null);
}
}

如何将内容添加到选项卡式窗格的"派对屏幕"中,以便它为我的链表中的每个项目显示一个 JLabel"名称"和一个垂直 JSeparator?

首先,JTabbedPane是为每个元素面板创建一个新选项卡的小部件。它不是选项卡式界面的子级。(例如。JTabbedPane应该包含一个名为partyScreen的JPanel。

JTabbedPane tabbedPanel = new JTabbedPane(); // holds all tabs
// this is how you add a tab:
JPanel somePanel = new JPanel();
tabbedPanel.addtab("Some Tab", somePanel);
// this is how you'd add your party screen
JPanel partyScreen = new JPanel();
tabbedPanel.addTab("Party Screen", partyScreen);

请记住,Java 命名约定有一个以小写字母开头的变量 - 因此 partyScreen 优于 PartyScreen。

然后循环访问Party中的每个Guy对象并添加相应的组件。我不知道你为什么使用LinkedList而不是List,但我假设你有一个很好的理由没有包含在上面的代码中。

// myParty is an instance of Party; I assume you have some sort of accessor to 
// the partyList
LinkedList<Guy> partyList = myParty.getPartyList();
ListIterator<Guy> it = partyList.listIterator();
while( it.hasNext() ) {
    Guy g = it.next();
    partyScreen.add(new JLabel( g.getName() ));
    partyScreen.add(new JSeparator() );
}

根据您希望它在partyScreen面板中的排列方式,您可能需要查看布局管理器。

相关内容

  • 没有找到相关文章

最新更新