如何在程序底部显示这两个按钮

时间:2013-04-29 03:52:30

标签: java swing jframe jbutton layout-manager

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

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

为此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.");
}

}

2 个答案:

答案 0 :(得分:3)

我已将BorderLayout用于JFrameFlowLayout用于ButtonPanelButtonPanel是框架的底部面板。

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);

答案 1 :(得分:1)

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

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

JPanel的默认布局是FlowLayout。所以以下陈述什么都不做:

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

阅读Using Layout Managers上的Swing教程中的部分。有一个关于使用BorderLayout和使用FlowLayout的部分。我不知道你是否应该只使用带有BorderLayout的面板或带有BorderLayout和FlowLayout组合的面板。我会让你修改代码以满足你的要求。