Java 使用JButton作为图像
所以,我面临的问题是,我想采用JButton的图像模型,并将其用作图像。我以前没有在swing中实现过图标,所以我决定做一些搜索。然而,我找不到任何东西来解释这里发生的事情 我尝试了以下代码:Java 使用JButton作为图像,java,swing,jbutton,jlabel,Java,Swing,Jbutton,Jlabel,所以,我面临的问题是,我想采用JButton的图像模型,并将其用作图像。我以前没有在swing中实现过图标,所以我决定做一些搜索。然而,我找不到任何东西来解释这里发生的事情 我尝试了以下代码: JButton button = new JButton("Text"); JLabel buttonIcon = new JLabel(button.getIcon()); 但是,当我去显示JLabel时,什么也没有出现。这种互动是错误的吗 我还可以将JButton的模型保存为图像格式,并将其导入 任
JButton button = new JButton("Text");
JLabel buttonIcon = new JLabel(button.getIcon());
但是,当我去显示JLabel时,什么也没有出现。这种互动是错误的吗
我还可以将JButton的模型保存为图像格式,并将其导入
任何帮助都将不胜感激 试试这个
File imgFile=new File("img.jpeg");
Image img=ImageIO.read(imgFile);
ImageIcon icon=new ImageIcon(img);
JButton button=new JButton();
JLabel label=new JLabel();
button.setIcon(icon);
label.setIcon(button.getIcon());
试试这个
File imgFile=new File("img.jpeg");
Image img=ImageIO.read(imgFile);
ImageIcon icon=new ImageIcon(img);
JButton button=new JButton();
JLabel label=new JLabel();
button.setIcon(icon);
label.setIcon(button.getIcon());
因此,如果您想快照一个可见组件并将其显示在
JLabel
中,您可以
大小设置为首选大小
buffereImage
button.paint(image.createGraphics())
将按钮绘制到图像上JLabel
的图标设置为包含图像的新图标
以下是一个示例(感谢camickr使流程更干净):
因此,如果您想快照一个可见组件并将其显示在
JLabel
中,您可以
大小设置为首选大小
buffereImage
button.paint(image.createGraphics())
将按钮绘制到图像上JLabel
的图标设置为包含图像的新图标
以下是一个示例(感谢camickr使流程更干净):
我有点搞不懂你想要实现什么。是否要在
JLabel
中显示按钮的图标
?还是要在JLabel
中显示JButton
的图像?顺便说一句,JButton
不扩展JLabel
,因此JLabel buttonIcon=newjbutton(button.getIcon())“代码>将抛出一个错误。@LukasRotter抱歉,这是一个输入错误。”。我已经修复了试图将JLabel设置为JButton的部分。我基本上想看看JButton的外观,并将其创建为一个无法交互的对象。编辑:在JLabel中显示Jbutton图像。您应该能够将Jbutton绘制为图像,并在JLabel上进行设置。另一个选择是更改JLabel的UI类,使其最终以与按钮相同的方式绘制图像。您也可以检查可重用类以获取组件的图像。我有点搞不清楚您想要实现什么。是否要在JLabel
中显示按钮的图标
?还是要在JLabel
中显示JButton
的图像?顺便说一句,JButton
不扩展JLabel
,因此JLabel buttonIcon=newjbutton(button.getIcon())“代码>将抛出一个错误。@LukasRotter抱歉,这是一个输入错误。”。我已经修复了试图将JLabel设置为JButton的部分。我基本上想看看JButton的外观,并将其创建为一个无法交互的对象。编辑:在JLabel中显示Jbutton图像。您应该能够将Jbutton绘制为图像,并在JLabel上进行设置。另一个选项是更改JLabel的UI类,使其最终以与按钮相同的方式绘制图像。您也可以检查可重用类以获取组件的图像。(1+)但为了使过程更干净1)无需重新绘制标签。当属性更改时,Swing组件将在自身上调用revalidate()
和repaint()
。2) 无需将按钮添加到面板以获取其图像。你需要a)使用button.setSize(button.getPreferredSize()
和b)将paintAll(…)更改为paint(…)
。这正是我需要的。非常感谢卢卡斯和卡米克尔!(1+)但为了使过程更清洁1)无需重新油漆标签。当属性更改时,Swing组件将在自身上调用revalidate()
和repaint()
。2) 无需将按钮添加到面板以获取其图像。你需要a)使用button.setSize(button.getPreferredSize()
和b)将paintAll(…)更改为paint(…)
。这正是我需要的。非常感谢卢卡斯和卡米克尔!我投了反对票,因为OP想要显示实际按钮的图像,而不是按钮的图标
。我投了反对票,因为OP想要显示实际按钮的图像,而不是按钮的图标
。