public GUI(String s,int w,int h){ init(s); ii(); GUITools.center(this); setSize(w, h); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
时间: 2024-04-04 13:30:50 浏览: 11
这是一个Java语言中的GUI类的构造函数,用于创建一个GUI窗口。其中,s是窗口的标题,w是窗口的宽度,h是窗口的高度。在构造函数中,先调用了init方法来初始化窗口,然后调用了ii方法来添加窗口中的控件。接着使用GUITools.center(this)将窗口居中显示,然后设置窗口的大小为w*h,设置可见性为true,最后设置关闭窗口时退出程序。整个构造函数的作用是初始化窗口,设置窗口大小和标题,添加控件,以及窗口的显示和关闭操作。
相关问题
用java编写一个华容道程序,要求实现GUI系统
好的,下面是一个简单的华容道程序GUI界面的实现,希望能对您有所帮助:
1. 创建一个名为`HuarongDaoGUI`的Java类,并继承`JFrame`类。
2. 在`HuarongDaoGUI`类中创建一个JPanel,用来存放游戏面板。
3. 在JPanel中绘制游戏面板,可以使用`Graphics`类来绘制游戏板块。
4. 创建一个`HuarongDao`类用于实现华容道游戏逻辑,包括移动游戏板块、检查游戏是否完成等。
5. 在`HuarongDaoGUI`类中添加按钮和事件监听器,用于控制游戏的移动。
6. 在`HuarongDaoGUI`类中添加菜单栏和菜单项,用于实现游戏的开始、暂停、重置等功能。
下面是实现华容道GUI的代码示例:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HuarongDaoGUI extends JFrame {
private JPanel boardPanel;
private JButton upButton;
private JButton downButton;
private JButton leftButton;
private JButton rightButton;
private JButton startButton;
private JButton pauseButton;
private JButton resetButton;
private JMenuBar menuBar;
private JMenu gameMenu;
private JMenuItem startMenuItem;
private JMenuItem pauseMenuItem;
private JMenuItem resetMenuItem;
private HuarongDao hrd;
public HuarongDaoGUI() {
setTitle("华容道游戏");
setSize(500, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boardPanel = new JPanel();
boardPanel.setBackground(Color.WHITE);
add(boardPanel, BorderLayout.CENTER);
upButton = new JButton("上移");
downButton = new JButton("下移");
leftButton = new JButton("左移");
rightButton = new JButton("右移");
startButton = new JButton("开始");
pauseButton = new JButton("暂停");
resetButton = new JButton("重置");
upButton.addActionListener(new MoveListener("up"));
downButton.addActionListener(new MoveListener("down"));
leftButton.addActionListener(new MoveListener("left"));
rightButton.addActionListener(new MoveListener("right"));
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.start();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.pause();
}
});
resetButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.reset();
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout());
buttonPanel.add(upButton);
buttonPanel.add(downButton);
buttonPanel.add(leftButton);
buttonPanel.add(rightButton);
buttonPanel.add(startButton);
buttonPanel.add(pauseButton);
buttonPanel.add(resetButton);
add(buttonPanel, BorderLayout.SOUTH);
menuBar = new JMenuBar();
gameMenu = new JMenu("游戏");
startMenuItem = new JMenuItem("开始");
pauseMenuItem = new JMenuItem("暂停");
resetMenuItem = new JMenuItem("重置");
startMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.start();
}
});
pauseMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.pause();
}
});
resetMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hrd.reset();
}
});
gameMenu.add(startMenuItem);
gameMenu.add(pauseMenuItem);
gameMenu.add(resetMenuItem);
menuBar.add(gameMenu);
setJMenuBar(menuBar);
hrd = new HuarongDao(this);
}
public JPanel getBoardPanel() {
return boardPanel;
}
public void setBoardPanel(JPanel boardPanel) {
this.boardPanel = boardPanel;
}
public static void main(String[] args) {
HuarongDaoGUI gui = new HuarongDaoGUI();
gui.setVisible(true);
}
class MoveListener implements ActionListener {
private String direction;
public MoveListener(String direction) {
this.direction = direction;
}
public void actionPerformed(ActionEvent e) {
hrd.move(direction);
}
}
}
class HuarongDao {
private HuarongDaoGUI gui;
private int[][] board;
public HuarongDao(HuarongDaoGUI gui) {
this.gui = gui;
initBoard();
drawBoard();
}
public void initBoard() {
board = new int[5][4];
board[0][0] = 1;
board[0][1] = 1;
board[0][2] = 1;
board[1][0] = 1;
board[1][1] = 0;
board[1][2] = 1;
board[2][0] = 1;
board[2][1] = 0;
board[2][2] = 1;
board[3][0] = 1;
board[3][1] = 0;
board[3][2] = 0;
board[4][0] = 1;
board[4][1] = 1;
board[4][2] = 0;
}
public void drawBoard() {
JPanel boardPanel = gui.getBoardPanel();
boardPanel.removeAll();
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
int x = j * 100;
int y = i * 100;
int w = 100;
int h = 100;
if (board[i][j] == 1) {
boardPanel.add(new Block(x, y, w, h));
}
}
}
boardPanel.revalidate();
boardPanel.repaint();
}
public void move(String direction) {
int[][] newBoard = new int[5][4];
if (direction.equals("up")) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
if (board[i][j] == 1) {
if (i > 0 && board[i-1][j] == 0) {
newBoard[i-1][j] = 1;
} else {
newBoard[i][j] = 1;
}
}
}
}
} else if (direction.equals("down")) {
for (int i = 4; i >= 0; i--) {
for (int j = 0; j < 4; j++) {
if (board[i][j] == 1) {
if (i < 4 && board[i+1][j] == 0) {
newBoard[i+1][j] = 1;
} else {
newBoard[i][j] = 1;
}
}
}
}
} else if (direction.equals("left")) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
if (board[i][j] == 1) {
if (j > 0 && board[i][j-1] == 0) {
newBoard[i][j-1] = 1;
} else {
newBoard[i][j] = 1;
}
}
}
}
} else if (direction.equals("right")) {
for (int i = 0; i < 5; i++) {
for (int j = 3; j >= 0; j--) {
if (board[i][j] == 1) {
if (j < 3 && board[i][j+1] == 0) {
newBoard[i][j+1] = 1;
} else {
newBoard[i][j] = 1;
}
}
}
}
}
board = newBoard;
drawBoard();
}
public void start() {
System.out.println("开始游戏");
}
public void pause() {
System.out.println("暂停游戏");
}
public void reset() {
initBoard();
drawBoard();
}
}
class Block extends JComponent {
private int x;
private int y;
private int w;
private int h;
public Block(int x, int y, int w, int h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public void paintComponent(Graphics g) {
g.setColor(Color.RED);
g.fillRect(x, y, w, h);
}
}
```
这是一个简单的华容道GUI程序,您可以根据需要进行修改和优化。
用java写一个小程序,要求包含GUI的知识和代码
好的,下面是一个使用Java GUI库Swing编写的简单程序,主要功能是实现一个简单的计算器。代码如下:
```java
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator implements ActionListener {
private JFrame frame;
private JTextField textField;
private JPanel buttonPanel;
private JButton[] buttons;
private String[] buttonLabels = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "0", ".", "=", "/"};
private double result = 0; // 计算结果
private String operator = "+"; // 当前运算符
private boolean startNumber = true; // 是否开始输入数字
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.init();
}
// 初始化程序
private void init() {
frame = new JFrame("Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textField = new JTextField("0");
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setEditable(false);
buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 5, 5));
buttons = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].setPreferredSize(new Dimension(60, 40));
buttons[i].addActionListener(this);
buttonPanel.add(buttons[i]);
}
frame.getContentPane().add(textField, BorderLayout.NORTH);
frame.getContentPane().add(buttonPanel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
// 处理按钮事件
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.matches("[0-9.]")) { // 数字或小数点
if (startNumber) {
textField.setText(command);
startNumber = false;
} else {
textField.setText(textField.getText() + command);
}
} else if (command.matches("[+\\-*/=]")) { // 运算符
if (startNumber) {
if (command.equals("-")) { // 负号
textField.setText("-");
startNumber = false;
} else {
operator = command;
}
} else {
double number = Double.parseDouble(textField.getText());
if (operator.equals("+")) {
result += number;
} else if (operator.equals("-")) {
result -= number;
} else if (operator.equals("*")) {
result *= number;
} else if (operator.equals("/")) {
result /= number;
} else if (operator.equals("=")) {
result = number;
}
textField.setText(String.valueOf(result));
operator = command;
startNumber = true;
}
}
}
}
```
这个程序使用了Java GUI库Swing来实现。程序主要包含一个 `JFrame` 窗口,一个 `JTextField` 文本框和一个 `JPanel` 按钮面板。在 `init()` 方法中,首先创建了窗口和文本框,并将文本框设置为只读。然后创建按钮面板,并添加了所有的按钮,将按钮的大小设置为60x40,并为每个按钮添加了一个事件监听器,用于处理按钮事件。在 `actionPerformed()` 方法中,根据按钮的标签进行相应的处理。如果按钮标签是数字或小数点,则将其添加到文本框中;如果按钮标签是运算符,则根据当前的运算符和数字计算结果,并将结果显示在文本框中。