编写一个程序,显示标有“绿色”和“橙色”的两个按钮。
如果用户点击绿色按钮,则窗口背景变为绿色。如果用户单击橙色按钮,则窗口的背景将变为橙色。
为此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.");
}
}
答案 0 :(得分:3)
我已将BorderLayout
用于JFrame
,FlowLayout
用于ButtonPanel
。 ButtonPanel
是框架的底部面板。
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组合的面板。我会让你修改代码以满足你的要求。