我正在努力开发一个小程序只是为了好玩,我想要它,所以当我点击菠萝按钮时,它会将菠萝添加到我想要的按钮下的一串文本中,同样适用于摇滚。所以基本上我需要一个摇滚和菠萝的计数器,这个按钮位于每次按下摇滚按钮时按下的按钮下,并且菠萝按钮被击中。
这是我到目前为止所做的。
public class BGUI extends JFrame{
private JButton pine;
private JButton rock;
public BGUI(){
super("Bikini Bottom Builder Game");
setLayout(new FlowLayout());
Icon p = new ImageIcon(getClass().getResource("b.png"));
pine = new JButton("Add Pineapple", p);
add(pine);
Icon r = new ImageIcon(getClass().getResource("b.png"));
rock = new JButton("Add Rock", r);
rock.setRolloverIcon(r);
add(rock);
Add handler = new Add();
pine.addActionListener(handler);
rock.addActionListener(handler);
}
private class Add implements ActionListener{
int pine = 0;
int rock = 0;
public void actionPerformed(ActionEvent event){
pine++;
rock++;
}
}
}
任何帮助将不胜感激!
答案 0 :(得分:2)
您可以使用单个GridBagLayout
或GroupLayout
,但我会按combining layouts进行处理。
要在此处执行此操作,您可能会有一个“外部”面板BorderLayout
。将包含FlowLayout
的现有面板放入边框布局的CENTER
。创建另一个带有流布局的新面板,将“底部”放入。将该面板添加到边框布局的PAGE_END
。
答案 1 :(得分:1)
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
public class BGUI extends JFrame {
private JButton pine;
private JButton rock;
private int pineappleCount = 0,
rockCount = 0;
public BGUI(){
super("Bikini Bottom Builder Game");
setLayout(new FlowLayout());
setSize(800, 800);
Icon p = new ImageIcon(getClass().getResource("b.png"));
pine = new JButton("Add Pineapple: " + pineappleCount, p);
pine.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
pine.setText("Add Pineapple: " + ++pineappleCount);
}
});
add(pine);
Icon r = new ImageIcon(getClass().getResource("b.png"));
rock = new JButton("Add Rock: " + rockCount, r);
rock.setRolloverIcon(r);
rock.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
rock.setText("Add Rock: " + ++rockCount);
}
});
add(rock);
super.setVisible(true);
}
public static void main(String[] a) {
new BGUI();
}
}
你有正确的想法。你只是错误地实现了你的听众。我继续为你的按钮添加了一个匿名内部类,以便产生你想要的计数效果。如果您希望计数器位于按钮下,则需要将JFrame组件的布局更改为其他内容并使用JLabel。