【发布时间】:2014-03-02 06:51:07
【问题描述】:
所以我正在用 java 制作一个 GUI。 假设我有一个 Constructor 方法,比如说
public class glmb extends JLabel implements ActionListener {
public glmb(){
Container C= getContentPane();
C.setLayout(null);
myLabel.setBounds(0,0,30,30);
myLabel.setBounds(30,0,30,30);
C.add(myLabel);
C.add(myButt);
MyButt.addActionListener(this);
setSize(400,400);
setVisible(true);
}}
我在类中有一个带有 ImageIcon 的 JLabel:
JLabel myLabel =new JLabel(new ImageIcon("mypic1.jpg"));
一个带有 Action Listener 的按钮,这将使 JLabel myLabel 改变图片:
if(e.getSource()==myButt)
{ myLabel =new JLabel(new ImageIcon("mypic2.jpg")); setSize(50,50);}
按下按钮后如何在 JFrame 中更改图片,按钮工作是因为框架改变了大小(参见 setSize(50,50))?谢谢你!!!这里还是java新手,哈哈
【问题讨论】:
-
您更改了对 myLabel 的引用,它不再指向屏幕上的内容,所以无论您对它做什么,它都不会改变屏幕上的内容。相反,只需使用对 myLabel 的引用并使用 setIcon 来更改其图像。
-
空布局很少是构建动态和可移植用户界面的答案,因为每个系统都有自己的字体指标和渲染差异。您应该考虑根据需要使用适当的布局管理器或复合布局,并让 API 处理这些脏细节
-
MadProgrammer,我不明白你在说什么(我高中 14 岁),是的,但是说 setSize 有效,框架改变了它的大小,那么,我该如何添加JLabel 到容器(见上图)。我在容器中添加了标签,然后将图像设置为可见。如何在同一个容器中再次添加 JLabel?
-
你没有。您已经在屏幕上显示了 JLabel,您只需更改已有实例的属性
-
怎么样?(对不起,这里还是新手。顺便说一句,感谢您的耐心等待)
标签: java swing jframe jlabel imageicon