【发布时间】:2013-06-20 07:51:29
【问题描述】:
我正在尝试更改我的 GUI 上 JLabel 和 JButton 的位置。即使我尝试使用 .setBounds 来更改它们的位置;它们都只出现在屏幕的顶部中心。
import java.awt.color.*;
import java.awt.font.*;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.UIManager.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class yo implements MouseListener {
Image image;
JButton button = new JButton("Wassup");
JFrame frame = new JFrame();
JLabel heloo = new JLabel("yo");
JPanel panel = new JPanel()
{
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
ImageIcon i = new ImageIcon("hi.jpg");
image = i.getImage();
g.drawImage(image,150,150,null);
g.drawString("Hello",100,100);
g.drawString("Hi",50,50);
}
};
public yo()
{
frame.add(panel);
frame.setTitle("Hello");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
panel.add(heloo);
panel.add(button);
button.setBounds(200,100,200,100);
heloo.setBounds(100,100,100,100);
button.addMouseListener(this);
}
public void mouseClicked (MouseEvent event)
{
heloo.setText(String.format("Clicked at %d,%d", event.getX(), event.getY()));
}
public void mouseEntered (MouseEvent Event){}
public void mouseExited (MouseEvent Event){}
public void mousePressed (MouseEvent Event){}
public void mouseReleased (MouseEvent Event){}
public static void main(String[] args)
{
new yo();
}
}
我为所有的进口道歉,我真的不知道我需要哪些,哪些是毫无意义的。
基本上我想要一些关于如何更改组件位置的帮助。
【问题讨论】:
-
这是我喜欢 Eclipse 的一件事;它会找出你需要的导入并为你添加它们。
-
不要使用 setBounds() 来设置组件的大小和位置。让布局管理器完成它的工作。那就是如果事实正在发生的事情。 JPanel 使用 FlowLayout,因此组件的定位基于 FlowLayout 的规则。
-
1) 通常,避免导入整个包 (
import awt.*),因为这是不好的做法,2) 如果它们来自 Java API,您可以像大多数人一样将它们排除在外已经知道这些课程了。 -
我喜欢 SSCCE 中包含的导入,因为我不使用 IDE,也不喜欢自己输入它们。
-
请学习java命名约定并遵守它们。
标签: java swing jbutton jlabel layout-manager