gpt4 book ai didi

java - 未设置 jscrollpane 中 jtextarea 的位置和大小

转载 作者:行者123 更新时间:2023-12-04 21:28:51 25 4
gpt4 key购买 nike

我正在研究编辑器。我正在为此使用 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,并将其添加到JPanelCENTER > 具有 BorderLayout

不要使用绝对定位。添加适当的 LayoutManager ,然后让 LayoutManager 完成剩下的工作,在屏幕上定位组件并调整其大小。

为了使用 setBounds(...) 方法,您必须为您的组件使用 null 布局,从角度来看,这是不值得使用的,如AbsolutePositioning的第一段所述.尽管在您提供的代码示例中,您同时进行了两件事,即使用 Layout 和使用 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();
}
});
}
}

关于java - 未设置 jscrollpane 中 jtextarea 的位置和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com