如何在按钮下的JFrame中创建计数器?

时间:2015-05-30 02:48:19

标签: java swing jframe layout-manager

我正在努力开发一个小程序只是为了好玩,我想要它,所以当我点击菠萝按钮时,它会将菠萝添加到我想要的按钮下的一串文本中,同样适用于摇滚。所以基本上我需要一个摇滚和菠萝的计数器,这个按钮位于每次按下摇滚按钮时按下的按钮下,并且菠萝按钮被击中。

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

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

        }
    }
}

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

您可以使用单个GridBagLayoutGroupLayout,但我会按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。