使用窗口调整 JTextArea 的大小

问题描述 投票:0回答:1

你好,我是 Java Swing 新手,我决定制作文本编辑器:

import java.awt.FlowLayout;  
import javax.swing.*;
public class main {
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500, 500);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().setLayout(new FlowLayout());
        JTextArea textArea = new JTextArea();
        JScrollPane scrollableTextArea = new JScrollPane(textArea);
        scrollableTextArea.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollableTextArea.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        f.pack()
  
        f.getContentPane().add(scrollableTextArea);
    }
}

但是 JTextArea 没有随窗口调整大小

我尝试获取窗口大小并按窗口大小调整 JTextArea 大小(我丢失了代码)

请帮忙!

java swing
1个回答
0
投票

Oracle 有一个有用的教程,使用 Swing 创建 GUI。 跳过使用 NetBeans IDE 学习 Swing 部分。 请特别注意在容器内布置组件部分。

稍后学习本教程的其余部分。

这是一个 GUI,它说明了当

JTextArea

 更改大小时,
JFrame
 也会更改大小。  我使用 Swing 布局管理器。

Example

所有 Swing 应用程序都必须以调用

SwingUtilities

 
invokeLater
 方法开始。  此方法确保 Swing 组件在 
Event Dispatch Thread 上创建并执行。

A

JFrame

 有一个默认的 
BorderLayout
。  我用了 
BorderLayout
 作为我的 
JPanel

养成将 Swing 组件放置在

JPanel

 中的习惯。

使用更具描述性的字段名称。 使用多种方法和类。 它使代码更容易被其他人阅读和理解。

这是完整的可运行代码。

import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SwingUtilities; public class JTextAreaExample2 implements Runnable { public static void main(String[] args) { SwingUtilities.invokeLater(new JTextAreaExample2()); } @Override public void run() { JFrame frame = new JFrame("JTextArea Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(createTextAreaPanel(), BorderLayout.CENTER); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } private JPanel createTextAreaPanel() { JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); JTextArea textArea = new JTextArea(20, 60); JScrollPane scrollPane = new JScrollPane(textArea); panel.add(scrollPane, BorderLayout.CENTER); return panel; } }
    
© www.soinside.com 2019 - 2024. All rights reserved.