我在这里要做的是每次按下按钮并选择图像 标签的文本会更改为该图像的路径。
这是我的代码:
public Frame() {
setAlwaysOnTop(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 640, 480);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JButton btnNewButton = new JButton("Select image");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
FileNameExtensionFilter filter = new FileNameExtensionFilter("Image", "jpg", "jpeg");
final JFileChooser fc = new JFileChooser();
filec.setAcceptAllFileFilterUsed(false);
filec.addChoosableFileFilter(filter);
filecc.showDialog(Frame.this, "Select an image");
File pathh = fc.getSelectedFile();
String pathhs;
pathhs = pathh.getPath();
System.out.println("The path is: " + pathhs);
lblNewLabel.setText(pathhs) <--the problem
}
});
btnNewButton.setBounds(25, 408, 165, 23);
contentPane.add(btnNewButton);
JLabel lblNewLabel = new JLabel("New label");
lblNewLabel.setForeground(Color.BLACK);
lblNewLabel.setBackground(Color.BLUE);
lblNewLabel.setBounds(10, 68, 266, 234);
contentPane.add(lblNewLabel);
}
问题在于:
String pathhs;
pathhs = pathh.getPath();
System.out.println("The path is: " + pathhs);
lblNewLabel.setText(pathhs) <--the problem
我无法访问变量lblNewLabel
,因此我无法更改文本。
答案 0 :(得分:1)
您可以从匿名类引用局部变量,只要在定义匿名类之前使用final
修饰符声明它们。
因此,我会将您的代码修改为:
JButton btnNewButton = new JButton("Select image");
btnNewButton.setBounds(25, 408, 165, 23);
contentPane.add(btnNewButton);
final JLabel lblNewLabel = new JLabel("New label");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0)
{
// Your actionPerformed implementation...
}
});
lblNewLabel.setForeground(Color.BLACK);
lblNewLabel.setBackground(Color.BLUE);
lblNewLabel.setBounds(10, 68, 266, 234);
contentPane.add(lblNewLabel);
答案 1 :(得分:0)
我无法访问变量lblNewLabel,因此我无法更改文本。
将标签定义为类变量而不是局部变量,然后匿名内部类可以访问变量。