-1

编写一个程序,显示两个标记为“绿色”和“橙色”的按钮。

如果用户单击绿色按钮,窗口的背景将变为绿色。如果用户单击橙色按钮,窗口的背景将变为橙色。

为这个 GUI创建一个JFrame。GUI 使用默认布局管理器。需要一个JPanel

将两个按钮放在面板内,并将面板添加到边框布局的南部区域。

注意标题栏中的文本。绿色按钮应该有白色文本和绿色背景。橙色按钮应具有橙色背景的黑色文本。

以下是我到目前为止所拥有的,它似乎不起作用。

public class LabAssign91 extends JFrame implements ActionListener{
private JPanel loc1Panel;
private JButton greenButton, orangeButton;

public LabAssign91()
{
    super("Colored Buttons");
    setLayout(new GridLayout(2, 2));
    setSize(300,250);
    setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    add(loc1Panel);
    loc1Panel = new JPanel();
    add(loc1Panel, BorderLayout.SOUTH);


    greenButton = new JButton("Green");
    greenButton.addActionListener(this);
    loc1Panel.add(greenButton, BorderLayout.WEST);
    greenButton.setBackground(Color.green);;
    orangeButton = new JButton("Orange");
    orangeButton.addActionListener(this);
    loc1Panel.add(orangeButton, BorderLayout.EAST);
    orangeButton.setBackground(Color.orange);

}

public static void main(String[] args) {
    LabAssign91 app = new LabAssign91();

}

public void actionPerformed(ActionEvent e) {
    throw new UnsupportedOperationException("Not supported yet.");
}

}

4

2 回答 2

3

I have used BorderLayout for the JFrame and FlowLayout for the ButtonPanel. ButtonPanel is the bottom panel of the frame.

enter image description here

frame = new JFrame();
frame.setLayout(new BorderLayout());

topPanel = new JPanel();
topPanel.add(new JLabel("Top Panel"));

middlepanel = new JPanel();
middlepanel.add(new JLabel("Middle Panel"));

bottomPanel = new JPanel();

bottomPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
bottomPanel.add(new JButton("Orange"));
bottomPanel.add(new JButton("Green"));

frame.add(topPanel, BorderLayout.NORTH);
frame.add(middlepanel, BorderLayout.CENTER);
frame.add(bottomPanel, BorderLayout.SOUTH);
于 2013-04-29T04:54:53.593 回答
1

JFrame 的默认布局是具有 SOUTH 约束的 BorderLayout。所以这个说法是没有必要的。

//setLayout(new GridLayout(2, 2));

JPanel 的默认布局是 FlowLayout。所以下面的语句什么都不做:

loc1Panel.add(greenButton, BorderLayout.WEST);
loc1Panel.add(orangeButton, BorderLayout.EAST);

阅读 Swing 教程中有关使用布局管理器的部分。有一节介绍了使用 BorderLayout 和使用 FlowLayout。我不知道您是否应该只使用具有 BorderLayout 的面板或结合使用 BorderLayout 和 FlowLayout 的面板。我会让你修复代码以满足你的要求。

于 2013-04-29T03:58:04.543 回答