如何将按钮移动到确切位置?

娜塔莉·麦克奈特(Natalie McKnight)

我希望按钮和文本字段以与它们所在的布局相同的布局进入标记为红色的空间。查看图片以了解我的意思。

更新:按钮现在就位,但图像不会出现在第二个面板上

在此处输入图片说明

我怎样才能把它们移到那里?到目前为止,这是我的代码

package gasindicator;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.basic.*;
import java.io.*;
import javax.imageio.*;
import java.net.*;

public class GasIndicator extends JPanel
 {
private Image image;


GasIndicator()
{
    try
    {
        image = ImageIO.read(new URL("http://i68.tinypic.com/2ceja8i.png"));

    }
    catch (IOException ioe)
    {
        System.out.println("Unable to fetch image.");
        ioe.printStackTrace();
    }

    setLayout( new BorderLayout() );

    JLabel background = new JLabel( new ImageIcon(image) );
    background.setLayout( new FlowLayout(FlowLayout.LEFT) );
    add( background );

    JPanel buttonPanel = new JPanel( new GridLayout(0, 3, 6, 5) );
    buttonPanel.setBorder( new EmptyBorder(338, 233, 0, 0) );

    buttonPanel.setOpaque( false );


    //for (int i = 0; i < 7; i++)
    {
        JButton button = new JButton("Button");
        JButton button1 = new JButton("Button");
        JButton button2 = new JButton("Button");
        JButton button3 = new JButton("Button");
        JButton button4 = new JButton("Button");
        JButton button5 = new JButton("Button");

        button.setPreferredSize( new Dimension(160, 45) );
        buttonPanel.add(button);
        buttonPanel.add(button1);
        buttonPanel.add(button2);
        buttonPanel.add(button3);
        buttonPanel.add(button4);
        buttonPanel.add(button5);

         button.addActionListener(new Action());
    }

    background.add( buttonPanel );
}

static class Action implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            JFrame frame2 = new JFrame("Museums in London");
            frame2.setVisible(true);
            frame2.setSize(550, 650);
            JPanel panel = new JPanel();
            frame2.add(panel);
            Custom contentPane;

            // JFrame frame = new JFrame("JTextField");
            contentPane = new Custom();
            frame2.setContentPane(contentPane);

        }
    }

private static void ShowGUI()
{
    JFrame frame = new JFrame("SSCCE");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new GasIndicator());
    frame.pack();
    frame.setLocationByPlatform( true );
    frame.setVisible( true );
}

public static void main(String[] args)
{
    EventQueue.invokeLater( () -> ShowGUI() );
/*
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            createAndShowGUI();
        }
    });
*/
}

class Custom extends JPanel {

public BufferedImage image;

public Custom() {
    try {

        image = ImageIO.read(new URL 
("http://www.destination360.com/europe/uk/images/s/museums.jpg"));
    } catch (IOException ioe) {
        System.out.println("Unable to fetch image.");
        ioe.printStackTrace();
    }
}

public Dimension getPreferredSize() {
    return (new Dimension(image.getWidth(), image.getHeight()));
}

public void paintComponent(Graphics x) {
    super.paintComponent(x);
    x.drawImage(image, 10, 10, this);
}
  }
}
卡米克

演示使用带边框的布局管理器的概念的简单示例。按钮的大小也已调整为图像中按钮的大小:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.basic.*;
import java.io.*;
import javax.imageio.*;
import java.net.*;

public class SSCCE extends JPanel
{
    private Image image;

    SSCCE()
    {
        try
        {
            image = ImageIO.read(new URL("http://i68.tinypic.com/2ceja8i.png"));

        }
        catch (IOException ioe)
        {
            System.out.println("Unable to fetch image.");
            ioe.printStackTrace();
        }

        setLayout( new BorderLayout() );

        JLabel background = new JLabel( new ImageIcon(image) );
        background.setLayout( new FlowLayout(FlowLayout.LEFT) );
        add( background );

        JPanel buttonPanel = new JPanel( new GridLayout(0, 3, 6, 5) );
        buttonPanel.setBorder( new EmptyBorder(338, 233, 0, 0) );

        buttonPanel.setOpaque( false );

        for (int i = 0; i < 6; i++)
        {
            JButton button = new JButton("Button " + i);
            button.setPreferredSize( new Dimension(160, 45) );
            buttonPanel.add(button);
        }

        background.add( buttonPanel );
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new SSCCE());
        frame.pack();
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}

是的,仍然有一些值的调整。但是,使用一个 EmptyBorder 调整整个面板的位置并且所有按钮同时移动比单独调整每个按钮的位置更容易。

注意:不要使用 JLabel 来显示图像,因为如果调整框架大小,组件会移动。而是使用您的自定义面板来绘制图像。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将按钮移动到随机位置?(迅速)

来自分类Dev

如何将按钮移动到随机位置?(迅速)

来自分类Dev

如何将按钮移动到随机位置?(快速)在iAd展示时

来自分类Dev

如何将按钮移动到随机位置?(快速)在iAd展示时

来自分类Dev

如何将绿色按钮移动到他居中且箭头仍在其旁边的位置?

来自分类Dev

arduino 可以将鼠标移动到屏幕上的确切位置吗?

来自分类Dev

每次单击按钮时,如何将“li”元素从当前位置移动到第 n 个位置?

来自分类Dev

如何将元素移动到鼠标位置

来自分类Dev

如何将小部件移动到特定位置?

来自分类Dev

如何将水印移动到视频位置并停止?

来自分类Dev

您如何将信封移动到特定位置?

来自分类Dev

如何将 pawn 移动到它的位置

来自分类Dev

如何将图标移动到此社交按钮的中心?

来自分类Dev

如何将块移动到lib

来自分类Dev

如何将容器移动到中间?

来自分类Dev

如何将图标移动到右端?

来自分类Dev

如何将node_modules正确移动到其他位置

来自分类Dev

如何将统一预制件移动到鼠标单击位置?

来自分类Dev

使用CSS,如何将DIV移动到中心位置的左侧?

来自分类Dev

QTabWidget。如何将一个标签移动到正确的位置?

来自分类Dev

如何将光标移动到图表的任何位置,而不仅是系列数据点?

来自分类Dev

如何将文本移动到.PDF中的X,Y位置

来自分类Dev

高图/高库存:如何将工具提示位置移动到数据组的中心

来自分类Dev

如何将一条线的点移动到特定位置?

来自分类Dev

如何将视图从Y位置移动到另一个Y

来自分类Dev

如何将页面文件移动到另一个物理磁盘位置?

来自分类Dev

如何将UIView移动到终端位置,但随着它接近它速度变慢?

来自分类Dev

CSS关键帧:如何将div移动到特定位置

来自分类Dev

如何将实体移动到鼠标位置并向其旋转

Related 相关文章

  1. 1

    如何将按钮移动到随机位置?(迅速)

  2. 2

    如何将按钮移动到随机位置?(迅速)

  3. 3

    如何将按钮移动到随机位置?(快速)在iAd展示时

  4. 4

    如何将按钮移动到随机位置?(快速)在iAd展示时

  5. 5

    如何将绿色按钮移动到他居中且箭头仍在其旁边的位置?

  6. 6

    arduino 可以将鼠标移动到屏幕上的确切位置吗?

  7. 7

    每次单击按钮时,如何将“li”元素从当前位置移动到第 n 个位置?

  8. 8

    如何将元素移动到鼠标位置

  9. 9

    如何将小部件移动到特定位置?

  10. 10

    如何将水印移动到视频位置并停止?

  11. 11

    您如何将信封移动到特定位置?

  12. 12

    如何将 pawn 移动到它的位置

  13. 13

    如何将图标移动到此社交按钮的中心?

  14. 14

    如何将块移动到lib

  15. 15

    如何将容器移动到中间?

  16. 16

    如何将图标移动到右端?

  17. 17

    如何将node_modules正确移动到其他位置

  18. 18

    如何将统一预制件移动到鼠标单击位置?

  19. 19

    使用CSS,如何将DIV移动到中心位置的左侧?

  20. 20

    QTabWidget。如何将一个标签移动到正确的位置?

  21. 21

    如何将光标移动到图表的任何位置,而不仅是系列数据点?

  22. 22

    如何将文本移动到.PDF中的X,Y位置

  23. 23

    高图/高库存:如何将工具提示位置移动到数据组的中心

  24. 24

    如何将一条线的点移动到特定位置?

  25. 25

    如何将视图从Y位置移动到另一个Y

  26. 26

    如何将页面文件移动到另一个物理磁盘位置?

  27. 27

    如何将UIView移动到终端位置,但随着它接近它速度变慢?

  28. 28

    CSS关键帧:如何将div移动到特定位置

  29. 29

    如何将实体移动到鼠标位置并向其旋转

热门标签

归档