无法在java中使文本区域不可编辑

时间:2014-08-18 01:50:01

标签: java swing

我对java很陌生,我目前正在学习如何制作GUI。为了测试制作它们,我尝试自己制作一个。为了找到如何使文本框无法编辑,我用Google搜索并在oracle网站上找到它并尝试了它。不幸的是,当我尝试执行此操作时,我会收到错误'令牌上的语法错误,错误的构造'和'令牌上的语法错误" false",删除此令牌'。这是我到目前为止的文本区域:

    JTextArea textArea = new JTextArea("Testing the text", 5, 10);
    JScrollPane scrollPane = new JScrollPane(textArea);
    textArea.setEditable(false);

错误发生在' textArea'之间。和' setEditable' (当然)' false'。当我尝试使用setText时,我遇到了同样的错误。

如果有帮助,我导入的是:

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JTextArea;
    import javax.swing.JScrollPane;

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

我还扩展了JFrame并实现了ActionListener

任何帮助将不胜感激:)

因此,根据要求,我将在此处发布其余代码。不幸的是,我还没有在程序中走得太远,但我会发布到目前为止的内容,并尽快完成它。

RunTestGui.java文件:

import javax.swing.JFrame;

public class RunTestGui {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        TestGui gui = new TestGui();
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

}

TestGui.java文件:

/*import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;*/

//import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;

//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;

public class TestGui extends JFrame /*implements ActionListener*/ {
//Global components
JTextArea textArea = new JTextArea("Testing the text", 5, 10);
JScrollPane scrollPane = new JScrollPane(textArea);
textArea.setEditable(false);

JTextField textBox;

//constructor
TestGui(String title){

super(title);

this.init();
this.pack();
this.setVisible(true);
}//end constructor

public void init(){

    JLabel ltextBox = new JLabel("TextBox: ");

    textBox = new JTextField(10);

    JPanel leftPanel = new JPanel();
    leftPanel.add(ltextBox);
    leftPanel.add(textBox);

    JPanel rightPanel = new JPanel();
    rightPanel.add(textArea);

}



}

2 个答案:

答案 0 :(得分:3)

问题是您必须将此行textArea.setEditable(false);放在方法体中,因此您可以放入构造函数或方法:

public void init(){

    JLabel ltextBox = new JLabel("TextBox: ");

    textBox = new JTextField(10);

    JPanel leftPanel = new JPanel();
    leftPanel.add(ltextBox);
    leftPanel.add(textBox);

    JPanel rightPanel = new JPanel();
    rightPanel.add(textArea);

    textArea.setEditable(false); //<-- put it here

}

答案 1 :(得分:2)

导致错误的行(textArea.setEditable(false);)是一个带方法调用的语句,而不是带声明的语句。

直接在class中允许声明,但只允许方法调用的语句只能在方法中使用。

只需将此行移至您的init()方法中即可。