我想在我的班级中实现一个新的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;
}
}
}
}
}
答案 0 :(得分:2)
首先在JPanel
添加按钮,然后在JFrame
默认情况下,JFrame使用BorderLayout
,默认情况下,此布局会在中心添加覆盖整个可用空间的组件。
如果您想添加更多组件,请使用容器添加所有组件,然后最后在JFrame
中添加该容器。