java图形界面打开空白_JAVA图形界面不显示

不知道为啥在我自己机子上没显示只有个frameimportjava.awt.*;publicclasscalculator{publicstaticvoidmain(Stringargs[]){inti;Framef1=newFrame();BorderLayoutb=newBorderLayout()...

不知道为啥在我自己机子上没显示 只有个frame

import java.awt.*;

public class calculator

{

public static void main(String args[])

{

int i;

Frame f1=new Frame();

BorderLayout b=new BorderLayout();

f1.setLayout(b);

f1.setBounds(100,100,280,300);

f1.setResizable(false);

f1.setVisible(true);

TextField mainTxt=new TextField("0");

f1.add(mainTxt,BorderLayout.NORTH);

Panel p1=new Panel();

p1.setLayout(new BorderLayout(0,15));

f1.add(p1);

Panel p2=new Panel();

p1.add(p2,BorderLayout.NORTH);

p2.setLayout(new GridLayout(1,4,5,5));

TextField t1=new TextField();

p2.add(t1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Java数字华容道图形界面的完整代码,使用的是Swing库: ```java import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class DigitalHuarongDao extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private final int ROWS = 4; // 行数 private final int COLS = 4; // 列数 private JButton[][] btns = new JButton[ROWS][COLS]; // 按钮数组 private ArrayList<Integer> nums = new ArrayList<Integer>(); // 存储数字 private int blankRow; // 空白块所在行 private int blankCol; // 空白块所在列 public DigitalHuarongDao() { setTitle("数字华容道"); setSize(400, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setLocationRelativeTo(null); init(); setVisible(true); } private void init() { JPanel panel = new JPanel(new GridLayout(ROWS, COLS)); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { JButton btn = new JButton(); btn.addActionListener(this); panel.add(btn); btns[i][j] = btn; } } add(panel); startGame(); } private void startGame() { nums.clear(); for (int i = 1; i < ROWS * COLS; i++) { nums.add(i); } nums.add(0); // 0表示空白块 Collections.shuffle(nums); for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { int num = nums.get(i * COLS + j); btns[i][j].setText(num == 0 ? "" : num + ""); if (num == 0) { blankRow = i; blankCol = j; } } } } private boolean move(int row, int col) { if (row == blankRow && col == blankCol) { return false; } if (row == blankRow) { // 同一行 int min = Math.min(col, blankCol); int max = Math.max(col, blankCol); for (int i = min + 1; i < max; i++) { if (nums.get(row * COLS + i) != 0) { return false; } } nums.set(blankRow * COLS + blankCol, nums.get(row * COLS + col)); nums.set(row * COLS + col, 0); btns[blankRow][blankCol].setText(btns[row][col].getText()); btns[row][col].setText(""); blankCol = col; return true; } else if (col == blankCol) { // 同一列 int min = Math.min(row, blankRow); int max = Math.max(row, blankRow); for (int i = min + 1; i < max; i++) { if (nums.get(i * COLS + col) != 0) { return false; } } nums.set(blankRow * COLS + blankCol, nums.get(row * COLS + col)); nums.set(row * COLS + col, 0); btns[blankRow][blankCol].setText(btns[row][col].getText()); btns[row][col].setText(""); blankRow = row; return true; } return false; } private boolean isWin() { for (int i = 0; i < ROWS * COLS - 1; i++) { if (nums.get(i) != i + 1) { return false; } } return true; } @Override public void actionPerformed(ActionEvent e) { JButton btn = (JButton) e.getSource(); int row = -1, col = -1; for (int i = 0; i < ROWS; i++) { for (int j = 0; j < COLS; j++) { if (btns[i][j] == btn) { row = i; col = j; break; } } } if (move(row, col)) { if (isWin()) { JOptionPane.showMessageDialog(this, "恭喜您,游戏胜利!"); startGame(); } } } public static void main(String[] args) { new DigitalHuarongDao(); } } ``` 在这个代码中,我们首先创建了一个JFrame窗口,并在其中添加了一个4x4的按钮矩阵。在startGame方法中,我们使用Collections.shuffle方法打乱了数字,并将它们放置在按钮上。然后,我们实现了move方法来移动数字块,并使用isWin方法来判断游戏是否胜利。最后,我们在actionPerformed方法中监听按钮点击事件,并在移动数字块后检查是否获胜。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值