Java JScrollPane不';我不能在这个领域工作

Java JScrollPane不';我不能在这个领域工作,java,swing,jscrollpane,jtextarea,Java,Swing,Jscrollpane,Jtextarea,我试图将滚动窗格添加到我的文本区域,但它没有出现。 代码如下: import javax.swing.*; public class PracownikGui extends JFrame { private JPanel Panelek; private JTextArea Tekscik; private JScrollPane Skrol; public PracownikGui() { setMinimumSize(new Dimension(600, 600));

我试图将滚动窗格添加到我的文本区域,但它没有出现。 代码如下:

import javax.swing.*;

public class PracownikGui extends JFrame {

private JPanel Panelek;
private JTextArea Tekscik;
private JScrollPane Skrol;

public PracownikGui() {

    setMinimumSize(new Dimension(600, 600));
    setLocationRelativeTo(null);
    setContentPane(Panelek);
    setResizable(false);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    Tekscik();

public void Tekscik() {
    Tekscik = new JTextArea(2, 10);
     Skrol = new JScrollPane( Tekscik );
     Tekscik.setSize(300, 300);
     Tekscik.setLocation(20, 70);
     Tekscik.setEditable(true);
     Tekscik.setLineWrap(true);
      add(Tekscik);
}}

请提供任何帮助。

设置JTextArea的大小或首选大小是在攻击自己的脚,因为这会阻止它扩展到JScrollPane:

 Tekscik.setSize(300, 300);
仅设置其行和列

您还需要将JScrollPane添加到GUI中,而不是JTextArea

此外,尽管空布局和
setBounds()
setSize(…)
setLocation(…)
似乎是让新手们喜欢的最简单、最好的创建复杂GUI的方法,但您创建的GUI越多,在使用它们时会遇到越严重的困难。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕

e、 g


您通过设置JTextArea的大小或preferredSize来攻击自己的脚,因为这会阻止它扩展到JScrollPane:

 Tekscik.setSize(300, 300);
仅设置其行和列

您还需要将JScrollPane添加到GUI中,而不是JTextArea

此外,尽管空布局和
setBounds()
setSize(…)
setLocation(…)
似乎是让新手们喜欢的最简单、最好的创建复杂GUI的方法,但您创建的GUI越多,在使用它们时会遇到越严重的困难。当GUI调整大小时,它们不会调整您的组件的大小,它们是一个需要增强或维护的皇家女巫,当它们放置在滚动窗格中时会完全失败,当在所有平台或屏幕分辨率与原始分辨率不同的情况下查看时,它们看起来非常糟糕

e、 g


我对你的代码做了不少修改。你的代码无法运行

这是我创建的GUI

如您所见,有一个垂直滚动条。滚动条的默认操作是,在用文本填充JTextArea之前,滚动条不会出现

以下是我对您的代码所做的重要更改

  • 类名以大写字母开头。方法名和变量名以小写字母开头

  • Swing应用程序必须以调用SwingUtilities invokeLater方法开始。这可确保在(EDT)上创建和使用回转组件。由于invokeLater方法需要可运行的,所以我让PracownikGui类实现了可运行的

  • 您可以使用Swing组件。您不会扩展Swing组件或任何其他Java类,除非您希望重写该类中的一个方法

  • 我删除了所有的调整大小和定位语句,除了定义JTextArea的行和列的语句。解释了这一点,但是您可以使用它来获得所需的Swing组件的排列。JPanel的默认布局是FlowLayout。JFrame的默认布局是BorderLayout

  • 我将JScrollPane添加到JPanel中。我将JPanel添加到JFrame中

  • 这是密码

    package com.ggl.testing;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class PracownikGui implements Runnable {
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new PracownikGui());
        }
    
        private JFrame frame;
        private JPanel panelek;
        private JTextArea tekscik;
        private JScrollPane skrol;
    
        @Override
        public void run() {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
    
            panelek = new JPanel();
            tekscik(panelek);
            frame.setContentPane(panelek);
    
            frame.setResizable(false);
            frame.pack();
            frame.setVisible(true);
        }
    
        public void tekscik(JPanel panelek) {
            tekscik = new JTextArea(2, 20);
            tekscik.setEditable(true);
            tekscik.setLineWrap(true);
    
            skrol = new JScrollPane(tekscik);
            panelek.add(skrol);
        }
    }
    

    我对你的代码做了不少修改。你的代码无法运行

    这是我创建的GUI

    如您所见,有一个垂直滚动条。滚动条的默认操作是,在用文本填充JTextArea之前,滚动条不会出现

    以下是我对您的代码所做的重要更改

  • 类名以大写字母开头。方法名和变量名以小写字母开头

  • Swing应用程序必须以调用SwingUtilities invokeLater方法开始。这可确保在(EDT)上创建和使用回转组件。由于invokeLater方法需要可运行的,所以我让PracownikGui类实现了可运行的

  • 您可以使用Swing组件。您不会扩展Swing组件或任何其他Java类,除非您希望重写该类中的一个方法

  • 我删除了所有的调整大小和定位语句,除了定义JTextArea的行和列的语句。解释了这一点,但是您可以使用它来获得所需的Swing组件的排列。JPanel的默认布局是FlowLayout。JFrame的默认布局是BorderLayout

  • 我将JScrollPane添加到JPanel中。我将JPanel添加到JFrame中

  • 这是密码

    package com.ggl.testing;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class PracownikGui implements Runnable {
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new PracownikGui());
        }
    
        private JFrame frame;
        private JPanel panelek;
        private JTextArea tekscik;
        private JScrollPane skrol;
    
        @Override
        public void run() {
            frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
    
            panelek = new JPanel();
            tekscik(panelek);
            frame.setContentPane(panelek);
    
            frame.setResizable(false);
            frame.pack();
            frame.setVisible(true);
        }
    
        public void tekscik(JPanel panelek) {
            tekscik = new JTextArea(2, 20);
            tekscik.setEditable(true);
            tekscik.setLineWrap(true);
    
            skrol = new JScrollPane(tekscik);
            panelek.add(skrol);
        }
    }
    

    您应该添加一些关于您正在编码的设备/系统的颜色。这是非常抽象的。你应该添加一些关于你正在编码的设备/系统的颜色。这是非常抽象的。