jframe location
时间: 2023-06-29 11:17:55 浏览: 52
JFrame的location属性是用来设置窗口的位置的。它是一个Point对象,表示窗口的左上角在屏幕上的坐标。可以使用JFrame的setLocation方法设置窗口的位置,例如:
```
JFrame frame = new JFrame();
frame.setLocation(100, 100); // 将窗口的左上角放在屏幕上的(100, 100)坐标处
```
也可以使用JFrame的getX和getY方法获取当前窗口在屏幕上的坐标,例如:
```
int x = frame.getX(); // 获取窗口左上角在屏幕上的x坐标
int y = frame.getY(); // 获取窗口左上角在屏幕上的y坐标
```
相关问题
做一个JFrame抖动
你可以使用以下代码让JFrame抖动:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameShakeDemo extends JFrame implements ActionListener {
private JButton shakeButton;
private Timer shakeTimer;
private int numShakes = 0;
private final int MAX_SHAKES = 10;
private final int SHAKE_DISTANCE = 5;
private final int SHAKE_DURATION = 50; // in ms
public JFrameShakeDemo() {
super("JFrame Shake Demo");
shakeButton = new JButton("Shake!");
shakeButton.addActionListener(this);
add(shakeButton, BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == shakeButton) {
shakeTimer = new Timer(SHAKE_DURATION, new ActionListener() {
int deltaX = 0;
int deltaY = 0;
long startTime = -1;
public void actionPerformed(ActionEvent e) {
if (startTime == -1) {
startTime = System.currentTimeMillis();
}
long elapsed = System.currentTimeMillis() - startTime;
if (elapsed < SHAKE_DURATION) {
double randX = Math.random() * 2 - 1;
double randY = Math.random() * 2 - 1;
int dx = (int) (randX * SHAKE_DISTANCE - deltaX);
int dy = (int) (randY * SHAKE_DISTANCE - deltaY);
setLocation(getX() + dx, getY() + dy);
deltaX += dx;
deltaY += dy;
} else {
((Timer) e.getSource()).stop();
setLocationRelativeTo(null); // reset location
numShakes++;
if (numShakes < MAX_SHAKES) {
shakeTimer.start();
}
}
}
});
shakeTimer.start();
}
}
public static void main(String[] args) {
new JFrameShakeDemo();
}
}
```
这个例子使用了一个定时器来让JFrame抖动。当用户点击“Shake”按钮时,JFrame会随机地在X和Y方向上移动,一直抖动,直到达到指定的最大抖动次数。
在JFrame窗口中加入一个panel然后加入一个JLabel控件,为panel加入ComponentListener,监听JLabel的大小变化,位置变化,是否显示,隐藏。Jabel的名称为谢佳辉
好的,以下是实现这个功能的示例代码:
```java
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ComponentListenerDemo extends JFrame {
private JPanel panel;
private JLabel label;
public ComponentListenerDemo() {
panel = new JPanel();
label = new JLabel("谢佳辉");
panel.add(label);
add(panel);
panel.addComponentListener(new MyComponentListener());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setVisible(true);
}
private class MyComponentListener implements ComponentListener {
public void componentResized(ComponentEvent e) {
Dimension size = label.getSize();
System.out.println("JLabel 大小变为 " + size.width + " x " + size.height);
}
public void componentMoved(ComponentEvent e) {
Point location = label.getLocation();
System.out.println("JLabel 位置变为 (" + location.x + ", " + location.y + ")");
}
public void componentShown(ComponentEvent e) {
System.out.println("JLabel 显示");
}
public void componentHidden(ComponentEvent e) {
System.out.println("JLabel 隐藏");
}
}
public static void main(String[] args) {
new ComponentListenerDemo();
}
}
```
这段代码创建了一个 JFrame,并在其中添加了一个 JPanel,再在 JPanel 中添加了一个 JLabel。我们通过 `addComponentListener()` 方法为 JPanel 添加了一个 ComponentListener 监听器,用于监听 JLabel 的大小变化、位置变化、显示、隐藏等事件。在 MyComponentListener 类中,我们实现了 ComponentListener 接口的方法,分别在事件发生时输出相应的信息。
你可以将这段代码复制到 Eclipse 或其他 Java IDE 中,运行起来看看效果。当你调整窗口大小、移动 JLabel、显示或隐藏 JLabel 时,程序会输出相应的信息。