所以,目前我是自學Java,我想用一個小按鈕和一個使用Swing的文本字段編寫一個簡單的計算器。雖然我設法實際創建了一個文本字段,其中填充了文本變量,但我無法使按鈕更改字段中的文本。我不斷收到關於內部類無法更改外部變量的錯誤。什麼是完成我的目標的最佳方式,爲什麼?使用內部類(Java)修改變量
在此先感謝,下面的代碼:
退房哪裏我的第一個按鈕的動作(Add按鈕)是,這就是我在測試更改文本字段的能力。
/**
* Created by Ray on 7/19/2015.
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class main extends JFrame {
double x = 0;
double y = 0;
double z = 0;
public main() {
initUI();
}
private void initUI() {
setLayout(null);
JPanel text = new JPanel();
text.setLayout(new BorderLayout());
text.setBounds(100, 10, 200, 25);
JScrollPane pane = new JScrollPane();
JTextArea area = new JTextArea();
area.setLineWrap(true);
area.setWrapStyleWord(true);
area.setBounds(100, 10, 200, 25);
pane.getViewport().add(area);
text.add(pane);
String contents = "Test";
area.setText(contents);
JButton addButton = new JButton("Add");
addButton.setToolTipText("Addition operation.");
addButton.setBounds(10, 10, 80, 25);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
contents = "Pressed";
}
});
JButton subButton = new JButton("Sub");
subButton.setToolTipText("Subtraction operation.");
subButton.setBounds(10, 40, 80, 25);
subButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
JButton mulButton = new JButton("Mul");
mulButton.setToolTipText("Multiplication operation.");
mulButton.setBounds(10, 70, 80, 25);
mulButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
JButton divButton = new JButton("Div");
divButton.setToolTipText("Division operation.");
divButton.setBounds(10, 100, 80, 25);
divButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
add(text);
add(addButton);
add(subButton);
add(mulButton);
add(divButton);
setTitle("Simple example");
setSize(500, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
main ex = new main();
ex.setVisible(true);
}
});
}
}
只是變量'contents'是本地'initUI'方法,所以你只需要把它聲明爲'final'在使用之前\ –
避免使用'null'佈局,像素完美的佈局是現代UI設計中的幻想。影響組件的個體大小的因素太多,其中沒有一個可以控制。 Swing旨在與佈局管理人員一起工作,放棄這些將導致無法結束的問題和問題,您將花費越來越多的時間來嘗試糾正 – MadProgrammer
您是否嘗試過使用'area.append(「一些新文本」) ;'? – MadProgrammer