帮我修改一下下面这段代码:package Graphics; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main { public static void main(String[] args) { //创建一个JFrame窗口 JFrame frame = new JFrame("Java Swing示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); //设置窗口背景颜色为灰色 frame.setBackground(Color.GRAY); //创建一个面板并添加到窗口中 JPanel panel = new JPanel(); //(1)将面板添加到窗口中 placeComponents(panel); //设置窗口可见 frame.setVisible(true); } private static void placeComponents(JPanel panel) { //创建一个按钮并添加到面板中 JButton button = new JButton("点击我"); panel.add(button); //为按钮添加事件监听器 button.addActionListener(//(2)用接口的匿名类为按钮添加点击事件 { @Override public void actionPerformed(ActionEvent e) { //获取文本框对象并修改其位置和大小 JTextField textField = (JTextField)panel.getComponent(1); int x = (int) (Math.random()*(panel.getWidth()- textField.getPreferredSize().width)) + 50; int y = (int) (Math.random()*(panel.getHeight()- textField.getPreferredSize().height)) + 50; //(3)将textField的位置移动到(x,y)坐标处 textField.setSize(textField.getPreferredSize()); //(4)在文本框中显示“你点击了按钮” textField.setText("你点击了按钮"); } }); JTextField textField = new JTextField(20); panel.add(textField); } }
时间: 2024-03-23 15:37:04 浏览: 82
以下是修改后的代码:
```java
package graphics;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {
// 创建一个 JFrame 窗口
JFrame frame = new JFrame("Java Swing 示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
// 创建一个面板并添加到窗口中
JPanel panel = new JPanel();
placeComponents(panel);
frame.setContentPane(panel);
// 设置窗口可见
frame.setVisible(true);
}
private static void placeComponents(JPanel panel) {
// 创建一个按钮并添加到面板中
JButton button = new JButton("点击我");
panel.add(button);
// 为按钮添加事件监听器
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取文本框对象并修改其位置和大小
JTextField textField = (JTextField) panel.getComponent(1);
int x = (int) (Math.random() * (panel.getWidth() - textField.getPreferredSize().width)) + 50;
int y = (int) (Math.random() * (panel.getHeight() - textField.getPreferredSize().height)) + 50;
textField.setBounds(x, y, textField.getPreferredSize().width, textField.getPreferredSize().height);
// 在文本框中显示“你点击了按钮”
textField.setText("你点击了按钮");
}
});
JTextField textField = new JTextField(20);
panel.add(textField);
}
}
```
主要修改如下:
1. 将包名改为小写,符合 Java 命名规范。
2. 将面板添加到 JFrame 窗口中,改用 `frame.setContentPane(panel)` 实现。
3. 将按钮事件监听器的匿名类改为实现 `ActionListener` 接口的普通类。
4. 在按钮事件监听器中,通过 `setBounds` 方法设置文本框的位置和大小。同时,将文本框的大小设置为首选大小,可以避免出现不必要的滚动条。
阅读全文