我想通过在按钮上使用actionlistener来更改JTextField中的文本。 有一个radiobutton组,Sort.SWITCH根据所选的radiobutton改变其值。
因此,当按下排序按钮时,输出字段中的文本必须从“输出”更改为“某些文本”。 但错误是无法从内部类访问输出字段。 Plz告诉我正确的方法。感谢..
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Sort extends JFrame
{
...
}
class q2 extends Sort
{
public static void main(String[] args)
{
...
JTextField Output = new JTextField(50);
Output.setText("Output");
ResultPanel.add(Output);
SortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a)
{
if (Sort.SWITCH == 1)
{
Output.setText("Some Text");
}
else if ...
...
} });
}}
答案 0 :(得分:2)
要从匿名类内部访问变量,请将变量定义为字段(而不是局部变量),或定义为final
:
public static void main(String[] args){
//...
final JTextField Output = new JTextField(50);
匿名内部类只能访问定义类中的字段或final
变量。
答案 1 :(得分:2)
将Output
定义为类字段:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Sort extends JFrame
{
...
}
class q2 extends Sort
{
public JTextField Output;
public static void main(String[] args)
{
...
Output = new JTextField(50);
Output.setText("Output");
ResultPanel.add(Output);
SortButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent a)
{
if (Sort.SWITCH == 1)
{
Output.setText("Some Text");
}
else if ...
...
} });
}
}