0

我是 Java GUI 的初学者。

我正在尝试使用 JList 构建用户界面,其中用户从已定义的列表中选择一个项目,并且与该特定项目相关的面板出现在列表的右侧。那是我的目标。不过,我首先要实现的是能够在选择某些菜单项时显示某些面板,但由于我的 . . .

这就是我到目前为止所做的。. .

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListSelectionModel;

public class MainGUI extends JFrame{

    JList list = new JList(
            new String[]{"Create Account","Borrow Book","Return Book",
                 "Add Book","Delete Book","Display Details"}
    );

    public MainGUI()
    {
        JPanel panel = new JPanel();
        JPanel panel1 = new JPanel();
        list.setForeground(Color.RED);
        list.setBackground(Color.WHITE);
        list.setSelectionForeground(Color.GREEN);
        list.setSelectionBackground(Color.LIGHT_GRAY);
        list.setFixedCellWidth(150);
        list.setFixedCellHeight(50);
        list.setFont(new Font("Serif",Font.BOLD,16));
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        panel.add(list);
        add(panel,BorderLayout.WEST);
    }

    public static void main(String[] args) {
        MainGUI frame = new MainGUI();          
        frame.setSize(500, 350);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }    
}
4

1 回答 1

2

您要查找的内容称为“卡片布局”。卡片布局就像一副卡片,您可以在其中将面向用户的顶部卡片与卡片中的另一张卡片交换。牌组中的每张卡片都是另一个 JPanel,其中包含您的各种 GUI。您将需要一个面板来创建帐户、借书、归还书等。Oracle 网站上的 Java 教程可以很好地引导您完成整个过程,但他们使用 Combobox 而不是像您这样的列表。

http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

在您的情况下,您可能希望将卡片布局放在边框布局的中心面板中。然后使用您的列表作为触发器来更改显示的卡片。如果您需要有关如何检测用户何时在列表中选择某些内容的帮助,请参阅 Oracle 的 JList 教程。

http://docs.oracle.com/javase/tutorial/uiswing/components/list.html

于 2013-10-17T17:16:28.650 回答