无法在Java中实现新的Button

时间:2014-05-23 21:14:35

标签: java swing jbutton layout-manager

我想在我的班级中实现一个新的JButton,但我没有得到解决方案。我在下面的代码监听中有“add(b10)”,它填写了应用程序的整个窗口,但我只想让它成为顶部的一个小按钮。如果我删除“添加(b10)”,我再也看不到该按钮了。你有什么解决办法?我只想把底部留在窗户顶上。

非常感谢。

    package de.hhu.propra.teamA4;

import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;


public class Game extends Panel{


    JButton b10;

    private int array[][];
    private MainMenu first;
    private Level level;

    public Game(){


        first = new MainMenu();

        b10 = new JButton("New Game");
        b10.setVisible(true);
        add(b10)

        first.setTitle("Worms");
        first.setSize(800,500);
        first.setDefaultCloseOperation(MainMenu.EXIT_ON_CLOSE);
        first.setVisible(true);
        first.setResizable(false);
        first.rungame();
        array = new int[800][500];
        run();
}

public void run(){
       Level level = first.getlevel();
       fillArray(level);

   }
public void fillArray(Level level){
       Ground[] ground = level.getground();
       Obstacle[] obstacles = level.getobstacles();

for (Obstacle currobstacle : obstacles){
           int obstaclex = currobstacle.getx();
           int obstacley = currobstacle.gety();
           int obstaclewidth = currobstacle.getwidth();
           int obstacleheight = currobstacle.getheight();
           int obs = currobstacle.isdestructable() ? 2 : 1;

           for (int y = obstacley; y<obstacley+obstacleheight;y++){
               for (int x = obstaclex; x<obstaclex+obstaclewidth;x++){
                   array[x][y]=obs;
               }
           }
       }

       for (Ground currground : ground){
           int groundstartx = currground.getstartx();
           int groundstarty = currground.getstarty();
           int groundendx = currground.getendx();
           int groundendy = currground.getendy();
           for(int i = groundstartx; i <= groundendx; i++){
               double slope = (double)(groundendy - groundstarty)/(groundendx - groundstartx);
               int currgroundy = (int) (groundstarty+slope*(i-groundstartx));
               for (int j = 0; j < (int) slope+1; j++){
                   array[i][currgroundy+j]=1;
               }               
           }
       }
   }


}

1 个答案:

答案 0 :(得分:2)

首先在JPanel添加按钮,然后在JFrame

中添加面板

默认情况下,JFrame使用BorderLayout,默认情况下,此布局会在中心添加覆盖整个可用空间的组件。

如果您想添加更多组件,请使用容器添加所有组件,然后最后在JFrame中添加该容器。

A Visual Guide to Layout Managers