jscrollpane中jtextarea的位置和大小没有设置



我正在编辑器上工作。我正在使用Java swing。我在JScrollPane中嵌入了JTextArea。我想把特定大小的jtextarea放在JScrollPane的中间。为此,我使用了setLocation函数。但这行不通吗?

public class ScrollPaneTest extends JFrame {
private Container myCP;
private JTextArea resultsTA;
private JScrollPane scrollPane;
private  JPanel jpanel;
public ScrollPaneTest() {
resultsTA = new JTextArea(50,50);
resultsTA.setLocation(100,100);
jpanel=new JPanel(new BorderLayout());
jpanel.add(resultsTA,BorderLayout.CENTER);
scrollPane = new JScrollPane(jpanel,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(800, 800));
scrollPane.setBounds(0, 0, 800, 800);
setSize(800, 800);
setLocation(0, 0);
myCP = this.getContentPane();
myCP.setLayout(new BorderLayout());
myCP.add(scrollPane);
setVisible(true);
addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
 });
}
public static void main(String[] args) {
     new ScrollPaneTest();
     }
}

您只需将JTextArea添加到JScrollPane,并将其添加到具有BorderLayoutJPanelCENTER中。

不要使用AbsolutePositioning添加一个适当的LayoutManager,并让LayoutManager在屏幕上定位和调整组件的大小。

为了使用setBounds(...)方法,您必须为您的组件使用null布局,这是不值得使用的,提供透视图,如AbsolutePositioning的第一段所述。虽然在您提供的代码示例中,您正在一起做这两件事,即使用布局和使用绝对定位,这在各个方面都是错误的。我的建议停止这样做:-)

在本例中,您提供的ROWSCOLUMNS足以根据布局关注调整JTextArea的大小。

代码示例:

import java.awt.*;
import javax.swing.*;
public class Example
{
    private JTextArea tarea;
    private void displayGUI()
    {
        JFrame frame = new JFrame("JScrollPane Example");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JPanel contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout(5, 5));
        JScrollPane textScroller = new JScrollPane();
        tarea = new JTextArea(30, 30);
        textScroller.setViewportView(tarea);
        contentPane.add(textScroller);
        frame.setContentPane(contentPane);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }
    public static void main(String... args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new Example().displayGUI();
            }
        });
    }
}

相关内容

  • 没有找到相关文章

最新更新