JTextArea не позволяет вводить текст

Я прочитал другие вопросы о JTextArea и переместил setVisible (true) вниз, но мой JTextArea по-прежнему не позволяет мне отображать текст. Мой код ниже, это конструктор класса, расширяющего JPanel, он ничего не покажет, когда я введу в JTextArea. JTextArea появляется посередине и называется «newText». Спасибо за помощь!

EditScreen(TaskMaster taskMaster, Task toEdit){
        this.taskMaster = taskMaster;
        editingTask = toEdit;
        textAreaShading = new Color(10, 20, 20, 20);
        initBackground();
        this.setLayout(new BorderLayout(500,500));
        this.setBackground(background); //this might not be initializedset

        topToolbar = new JPanel();
        topToolbar.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 
        topToolbar.setOpaque(false);
        topToolbar.setLayout(new BoxLayout(topToolbar, BoxLayout.X_AXIS));
        category = new JLabel("Choose type:");
        categories = new JComboBox(catS);
        date = new JTextField(10);
        topToolbar.add(category);
        topToolbar.add(categories);
        topToolbar.add(new JLabel("Due Date:"));
        topToolbar.add(date);


        textPanel = new JPanel();
        //textPanel.setLayout(new BoxLayout(textPanel, BoxLayout.Y_AXIS));  
        textPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));   
        textPanel.setLayout(new BorderLayout());  
        //textPanel.setOpaque(false);
        textPanel.setBackground(Color.CYAN);
        newText = new JTextArea();
        newText.setOpaque(true);
        newText.setBackground(textAreaShading);
        newText.setLineWrap(true);
        newText.setWrapStyleWord(true); 
        textPanel.add(BorderLayout.CENTER, newText);


        bottomPanel = new JPanel();
        bottomPanel.setBorder(BorderFactory.createEmptyBorder(5,5,2,0)); 
        bottomPanel.setOpaque(false);
        bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.X_AXIS));
        priority = new JComboBox(priorityS); 
        cancel = new JButton("Cancel");
        save = new JButton("Save");
        bottomPanel.add(new JLabel("Choose Priority:"));
        bottomPanel.add(priority);
        bottomPanel.add(cancel);
        bottomPanel.add(save);


        //set layout and size of frame
        this.add(topToolbar,BorderLayout.NORTH);
        this.add(textPanel, BorderLayout.CENTER); 
        //screenPanel.add(newText, BorderLayout.CENTER); 
        this.add(bottomPanel, BorderLayout.SOUTH);

        initListeners();
        initEditingTask();
        this.setVisible(true);
        textPanel.setVisible(true);
        newText.setVisible(true);
    }

person Fred V    schedule 01.05.2014    source источник
comment
Попробуйте удалить newText.setOpaque (true);   -  person Tareq    schedule 01.05.2014
comment
(1) Для получения более быстрой помощи опубликуйте минимальный полный пример, демонстрирующий проблему. Мы не можем воспроизвести вашу проблему с помощью только фрагмента кода. (2) Обычно вам вообще не нужно вызывать newText.setVisible(...).   -  person splungebob    schedule 01.05.2014
comment
Спасибо, я хотел избежать того, что проект очень большой, и я не знал, как предоставить MCE. Я постараюсь сделать это, если не найду решение. Я надеялся, что это небольшое и быстрое решение, ускользавшее от моего взгляда!   -  person Fred V    schedule 01.05.2014
comment
Вызов newText.setBackground(textAreaShading) сделает фон очень темным в соответствии с объявлением textAreaShading, поэтому, если ваш текст также темный (черный?), Уверены ли вы, что можете видеть темный текст на темном фоне?   -  person xav    schedule 01.05.2014


Ответы (1)


Хорошо, кто-то ответил на мой вопрос, а затем удалил этот ответ, поэтому я опубликую его здесь, это не было моим делом, но это была проблема с программой, и вот она!

setLayout (новый BorderLayout (500,500)); оставляет большие промежутки на покрытии целиком.

Решение: уменьшить зазоры

setLayout (новый BorderLayout (5,5));

Загадка кода: завершена. Всем спасибо!

person Fred V    schedule 01.05.2014