当前位置: 首页 > 面试题库 >

如何用ImageIcon完全填充JButton的表面?

慕麒
2023-03-14
问题内容

我尝试用ImageIcon完全填充Jbutton的“表面”。

如您所见,“ Exit”标签的边缘与按钮的边缘之间仍然存在一些空间。您可以
在背景上看到带有白色蓝色填充的按钮。我想要的是用标签完全覆盖此按钮。

有没有办法做到这一点?

Here is my code:

    package footballQuestioner;

import java.awt.AlphaComposite;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;



public class Beiexamples {

    public static void main(String[] args) {

        JFrame frame = new MyFrame();

    }

}

class MyFrame extends JFrame {

        BufferedImage image;
        JLabel label;

    public MyFrame() {

        setLayout(new GridBagLayout());
        JPanel panel=new JPanel(new BorderLayout());
        Font font = new Font("Rockwell Extra Bold", Font.PLAIN, 25);
        JButton button1=new JButton();

        image=getBufferedImage("footballQuestioner/ExitButtonLabel.png");
        image=getScaledImage(250, 100, image);

        label=new JLabel(new ImageIcon(image));


        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setSize(750,300);


        button1.setForeground(Color.YELLOW);
//      button1.setBackground(new Color(0,100,0));
        button1.setFocusPainted(true);
        button1.setIcon(new ImageIcon(image));
        button1.setBorder(BorderFactory.createEmptyBorder());

        add(button1);

        pack();
        centeringWindow();
        setVisible(true);
    }


    public void centeringWindow() {
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        int x;
        int y;

        x = (int) (dimension.getWidth() - getWidth()) / 2;
        y = (int) (dimension.getHeight() - getHeight()) / 2;

        setLocation(x, y);
    }

    public BufferedImage getBufferedImage(String pathName) {

        try {
            image = ImageIO.read(Beispielfenster.class.getClassLoader()
                    .getResourceAsStream(pathName));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return image;

    }

    public BufferedImage getScaledImage(int width, int height,
            BufferedImage orginalImage) {

        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_ARGB);
        Graphics2D g = image.createGraphics();

        // 2. Use the Graphic object to draw a new image to the image in the
        // buffer
        g.setComposite(AlphaComposite.Clear);
        g.fillRect(0, 0, width, height);
        g.setComposite(AlphaComposite.SrcOver);
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g.drawImage(orginalImage, 0, 0, width, height, null);

        g.dispose();

        return image;

        // Image image=orginalImage.getImage();
        // Image newImage=image.getScaledInstance(width,height,
        // Image.SCALE_SMOOTH);
        // ImageIcon imageIcon=new ImageIcon(newImage);
        //
        // return imageIcon;
    }

}

问题答案:

您需要将边框设置为,EmptyBorder以便按钮内没有填充。

add this:

button1.setBorder(BorderFactory.createEmptyBorder());


 类似资料:
  • 问题内容: 我目前正在使用Page_Load中的以下代码创建和读取DataTable 我想知道如何转换此代码,以便它从SQL查询中读取?我正在尝试下面的代码,但不确定如何连接它们,以便页面加载中的数据表使用下面的SQL命令填充。 我被困在: 我希望成为 问题答案: 您需要修改方法,并在其中添加“实验”代码,然后返回。

  • 问题内容: 嗨,我非常需要一些帮助,我已经在jbutton启用之前搜索了有关要填充的Jtextfield的文档,大多数人都使用DocumentListener来确定是否填充了Jtextfield。我尝试了DocumentListener,它可以工作,但是我想要的是所有Jtextfield都不能为空,然后Jbutton启用,这是我的代码。 问题答案: 表示所有字段必须为空。有时您需要大声朗读此逻辑…

  • 问题内容: 嗨,我如何使ImageIcon的大小适合JButton?我想将ImageIcon的大小调整为Button的大小 问题答案: 您可以通过在项目中添加一些方法来做到这一点: 现在,在示例代码中使用此方法: 如果只需要图像而没有边框,只需将offset变量设置为0或完全摆脱offset变量。

  • 作为我作业的一部分,我们得到了一个我们不能更改的接口,以及一些用来开发我们方法的预定义测试。 界面如下: 我正在运行的特定测试: 以及我需要从测试中创建的方法: 从测试中我可以看出,在方法中,我需要创建并用注册映射中匹配的学生填充它,然后返回列表。 我创建了以下字段:- 我搞不懂的是,如何将注册地图中的数据传递到学生列表中,以使测试中的断言为真。

  • 我需要滚动表来获取使用selenium和java绑定以及chrome驱动程序动态填充的表内容。这是另一个滚动,而不是窗口滚动本身。我能找到的所有可用的解决方案都是针对窗口滚动的。我在这里需要的是滚动桌子。我需要滚动突出显示的那个 我收到以下错误消息 错误消息:没有这样的元素:找不到元素:{“method”:“XPath”,“Selector”:“//*[@class='antiscroll-scr