首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.setBound不为JLabel和JButton工作

.setBound不为JLabel和JButton工作
EN

Stack Overflow用户
提问于 2018-06-19 03:21:22
回答 2查看 0关注 0票数 0

我试图改变JLabel和JButton在我的GUI上的位置。尽管我尝试使用.setBound来更改它们的位置,但它们都出现在屏幕的顶部中心。

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();
}
}
EN

回答 2

Stack Overflow用户

发布于 2018-06-19 11:43:40

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.setLayout(null);
    panel.add(heloo);
    panel.add(button);
    button.setBounds(200,100,200,100);
    heloo.setBounds(100,100,100,100);
    button.addMouseListener(this);
}

通过将JPanel的布局设置为NULL,它将位于“绝对布局”中,然后将能够使用setBound()设置JLabel和JButton的位置。

票数 0
EN

Stack Overflow用户

发布于 2018-06-19 12:37:32

不要使用setBound()来设置组件的大小和位置。

让布局经理做好它的工作。如果事实是这样的话。JPanel使用FlowLayout,所以组件是基于FlowLayout的规则来定位的。如果需要,可以将FlowLayout更改为向左对齐组件。或者可以使用不同的布局管理器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档