我有一个使用NetBeans IDE开发的java应用程序。我想用可变路径向gui添加一个图像。该路径可以包含的不同选项的数量将从数据库中填充,而且数量相当多,因此我不想将所有这些图像导入到Netbeans应用程序中。
我的形象代码是:
jLabel9 = new javax.swing.JLabel();
jLabel9.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/images/defaultportrait.png"))); // NOI18N
jLabel9.setText("jLabel9");
desktopPane.add(jLabel9);
jLabel9.setBounds(520, 60, 170, 190);我希望这样,所以当我点击GUI上的一个按钮时,图像源的路径发生了改变,图像被重新绘制在我的gui上。
示例:
private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) {
AdjustPictureSource;
RedrawImage;
} 有没有人对此有任何想法。
另外,我事先很抱歉,我仍然是Java方面的新手。
谢谢!
发布于 2013-12-30 22:08:26
调用repaint()调用paintComponent (Graphics g)方法,该方法为您重新绘制。默认情况下,每个GUI都有此方法的一个实例,如果您希望以不同的方式绘制,则可以重写它。通常,如果您不希望在GUI之上绘制线条、形状或文本,则不需要覆盖它。
至于更改图片的路径,您需要将侦听器添加到GUI对象(例如按钮)中,以便让它们在Java中执行任何操作。在actionPerformed(ActionEvent event)方法中,您可以将获取新URL所需的代码放入其中。例如,您可以创建一个新的ImageIcon并调用jLabel9的setIcon方法。
另外一点是,对于您多次使用的import类(如JLabel、ImageIcon等),通常更好。
编辑:更完整的示例,使用匿名内部类:
JButton myButton = new JButton("Press Here!");
myButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
jLabel9.setIcon(new ImageIcon("newPath"));
}
});https://stackoverflow.com/questions/20848316
复制相似问题