【问题标题】:Set JLabel to top of JTextArea and move down JTextArea将 JLabel 设置为 JTextArea 顶部并向下移动 JTextArea
【发布时间】:2015-03-10 11:56:34
【问题描述】:

我有一个包含 JPanel 的小 GUI,其中有 JTextArea 和 JLabel,当我制作时

panel1.setLayout(null);

我可以完成所需的位置,但 JTextArea 消失了!当我做

panel1.setLayout((LayoutManager) new FlowLayout(FlowLayout.LEFT));

我可以看到Jlabel and JTextArea,但无法获得位置,如何获得所需的位置设置,我是新手!请帮忙!谢谢

代码:

private void createPageScreen1() {
    panel1 = new JPanel();
    panel1.setLayout((LayoutManager) new FlowLayout(FlowLayout.LEFT));
    //panel1.setLayout(null);
    //panel1.setLayout(new BorderLayout());


    JLabel lblProcessingData = new JLabel();
    //lblProcessingData.setBounds(5, 5, 15, 10);
    lblProcessingData.setLocation(5, 5);
    lblProcessingData.setText("label for Title");
    panel1.add(lblProcessingData);

    String fileName = "loadFiles\\testFile.txt";

    try {
        textArea = new JTextArea(40, 37);
        //textArea.setBounds(5, 20, 40, 37);
        textArea.setBorder (new TitledBorder (new EtchedBorder(), fileName));
        textArea.setLineWrap(true);
        textArea.setEditable(false);
        textArea.setVisible(true);

        FileReader reader = new FileReader(fileName);
        BufferedReader br = new BufferedReader(reader);
        textArea.read(br, null);
        br.close();
        textArea.requestFocus();

        JScrollPane scroll1 = new JScrollPane(textArea);
        scroll1.setVerticalScrollBarPolicy (ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        panel1.add(scroll1);
    } catch (Exception e) {

        e.printStackTrace();
    }
    panel1.setVisible(true);
}

【问题讨论】:

  • 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、独立、正确示例)。

标签: java swing jlabel layout-manager jtextarea


【解决方案1】:

对于这种类型的程序,文件内容显示和标签,BorderLayout 更适合。

private void createPageScreen1()
{
    panel1 = new JPanel();
    // Use BorderLayout
    panel1.setLayout(new BorderLayout());

    JLabel lblProcessingData = new JLabel();
    lblProcessingData.setText("label for Title");
    // Add Label to top
    lblProcessingData.setBorder(new EmptyBorder(5, 5, 5, 5));
    panel1.add(lblProcessingData, BorderLayout.NORTH);

    String fileName = "loadFiles\\testFile.txt";

    try
    {
        textArea = new JTextArea(40, 37);
        textArea.setBorder(new TitledBorder(new EtchedBorder(), fileName));
        textArea.setLineWrap(true);
        textArea.setEditable(false);
        textArea.setVisible(true);

        FileReader reader = new FileReader(fileName);
        BufferedReader br = new BufferedReader(reader);
        textArea.read(br, null);
        br.close();
        textArea.requestFocus();

        JScrollPane scroll1 = new JScrollPane(textArea);
        scroll1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        // Fill remaining space with TextArea
        panel1.add(scroll1, BorderLayout.CENTER);
    }
    catch (Exception e)
    {

        e.printStackTrace();
    }
    panel1.setVisible(true);
}

【讨论】:

  • 感谢@Wladimir82,当我将其更改为panel1.setLayout(new BorderLayout()); 时,我得到了这样的output,看不到标签!
  • 不要忘记添加具有布局约束的组件,例如“panel1.add(lblProcessingData, BorderLayout.NORTH);”
  • 您也不应该设置任何“边界”,因为布局管理器会为您执行此操作。但我看到你用“TitledBorder”解决了这个问题:)
  • 感谢@Wladimir82,我没有设置任何界限!标题边框来自textArea.setBorder(new TitledBorder(new EtchedBorder(), fileName));this!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 2017-08-15
  • 2011-09-08
  • 1970-01-01
相关资源
最近更新 更多