JTextArea没有显示

时间:2016-07-09 07:07:40

标签: java swing layout-manager jtextarea null-layout-manager

为什么JTextArea没有显示在GUI

public class AddMovie extends JTextField {

    static JFrame frame;
    private JLabel description;
    JTextArea movieDescription;

    public JPanel createContentPane() throws IOException
    {

        JPanel totalGUI = new JPanel();
        totalGUI.setLayout(null);
        totalGUI.setBackground(Color.WHITE);

        description = new JLabel("Description  ");
            description.setLocation(15,285);
            description.setSize(120, 25);
            description.setFont(new java.awt.Font("Tahoma", 0, 12));
            movieDescription=new JTextArea();
          movieDescription.setLocation(15,320);
          movieDescription.setSize(420, 110);

        JScrollPane scrollPane = new JScrollPane(movieDescription);    
        totalGUI.add(description);
        totalGUI.add(movieDescription);
        totalGUI.add(cancel);
        totalGUI.add(scrollPane);                   
        return totalGUI;
    }


    static void createAndShowGUI() throws IOException
    {

        JFrame.setDefaultLookAndFeelDecorated(true);
        frame = new JFrame("New Movie");
        //Create and set up the content pane.
        AddMovie demo = new AddMovie();
        frame.setContentPane(demo.createContentPane());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(515, 520);
        frame.setLocation(480,120);
        frame.setVisible(true);
    }

    public void setVisible(boolean b) {
        // TODO Auto-generated method stub

    }

}

3 个答案:

答案 0 :(得分:4)

根据建议hereherenull布局会带来麻烦。由于您的显示中心位于描述中,因此请使用JTextArea构造函数来指定行和列的大小。当您pack()封闭Window时,它会调整大小以适合文本区域。我已添加了一些 ad hoc 文字来说明效果。我还要updated代码,以便在调整框架大小时允许文本区域增长。

image

import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 * @see https://stackoverflow.com/a/38282886/230513
 */
public class Test {

    private JPanel createPanel() {
        JPanel panel = new JPanel(new GridLayout());
        //panel.setBorder(BorderFactory.createTitledBorder("Description"));
        JTextArea movieDescription = new JTextArea(10, 20);
        panel.add(new JScrollPane(movieDescription));
        movieDescription.setLineWrap(true);
        movieDescription.setWrapStyleWord(true);
        movieDescription.setText(movieDescription.toString());
        return panel;
    }

    private void display() {
        JFrame f = new JFrame("Test");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setContentPane(createPanel());
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Test()::display);
    }
}

答案 1 :(得分:3)

totalGUI.setLayout(null);

您应该解决的第一个问题是:Java GUI必须使用不同语言环境中的不同PLAF,在不同的操作系统,屏幕大小,屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them以及white space的布局填充和边框。

除了许多其他问题之外,它通常还会破坏滚动窗格执行其设计工作的能力。

一般提示:

  1. 没有名为cancel的属性。
  2. 不要覆盖像setVisible(boolean)这样的方法,然后将它们留空!这只不过是打破功能正常的功能!
  3. movieDescriptiontotalGUI都添加了Tahoma滚动窗格。它应该只添加到滚动窗格。
  4. 除了插入符号外,添加到白色BG的白色文本区域将不可见。
  5. JLabel字体仅在某些操作系统<&#39;
  6. 中可用
  7. 您可以将文本区域添加到面板,并将“说明”文本设置为放置文本区域的面板上使用的TitledBorder,而不是使用throws IOException作为说明。
  8. 声明df.to_hdf('name_of_file_to_save', 'key_1',table=True) df.to_hdf('name_of_file_to_save', 'key_2', table=True) # saved to the same h5 file as above 的两个方法中没有任何内容实际上可以导致一个。{li>

答案 2 :(得分:-1)

createAndShowGUI方法中,您再次创建 AddMovie 对象..

所以,如果你修改了如下的尾声,那就可以了......

实施例

    public class AddMovie extends JTextField {

    private static final long serialVersionUID = 6180900736631578119L;
    private JFrame frame;
    private JLabel description;
    private JTextArea movieDescription;

    public JPanel createContentPane() {

    JPanel totalGUI = new JPanel();

    totalGUI.setBackground(Color.WHITE);

    description = new JLabel("Description  ");
    description.setLocation(15, 285);
    description.setSize(120, 25);
    description.setFont(new java.awt.Font("Tahoma", 0, 12));
    movieDescription = new JTextArea();
    movieDescription.setLocation(15, 320);
    movieDescription.setSize(420, 110);

    JScrollPane scrollPane = new JScrollPane(movieDescription);
    totalGUI.add(description);
    totalGUI.add(movieDescription);
    totalGUI.add(scrollPane);

    return totalGUI;
    }

    public void createAndShowGUI() {
    JFrame.setDefaultLookAndFeelDecorated(true);
    frame = new JFrame("New Movie");
    frame.setContentPane(createContentPane());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(515, 520);
    frame.setLocation(480, 120);
    frame.setVisible(true);
    }

    public static void main(String[] args) {
    AddMovie am = new AddMovie();
    am.createAndShowGUI();
    }

}