gpt4 book ai didi

JAVA Swing : Can't add text area to a Border Layout

转载 作者:行者123 更新时间:2023-12-04 10:59:14 27 4
gpt4 key购买 nike

MainFrame.java

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

private JTextArea textArea;
private JButton btn;
private TextPanel textPanel;

public MainFrame() {

super("My First JAVA Swing Window");
setLayout(new BorderLayout());

textArea = new JTextArea();
btn = new JButton("Click Me");
textPanel = new TextPanel();


btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
textArea.append("Button has been clicked!\n");
//textPanel.appendText("Button has been clicked!\n");
}
});

add(textArea, BorderLayout.CENTER);
add(btn, BorderLayout.SOUTH);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

}


如果我单击按钮,我的目标是向文本区域添加文本(已单击按钮!)。我设法做到了,但我试图将文本区域分隔在不同的类中,如果我将它分隔,它就不再起作用了。我看到的是它甚至没有将文本区域添加到边框布局中……这是我如何尝试分开,这就是不起作用的部分:
MainFrame.java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class MainFrame extends JFrame{

//private JTextArea textArea;
private JButton btn;
private TextPanel textPanel;

public MainFrame() {

super("My First JAVA Swing Window");
setLayout(new BorderLayout());

//textArea = new JTextArea();
btn = new JButton("Click Me");
textPanel = new TextPanel();


btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//textArea.append("Button has been clicked!\n");
textPanel.appendText("Button has been clicked!\n");
}
});

//add(textArea, BorderLayout.CENTER);
add(btn, BorderLayout.SOUTH);

setSize(600,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

}


文本面板.java
import java.awt.BorderLayout;

import javax.swing.JPanel;
import javax.swing.JTextArea;

public class TextPanel extends JPanel{

private JTextArea textArea;

public TextPanel() {

textArea = new JTextArea();
setLayout(new BorderLayout());
add(textArea, BorderLayout.CENTER);
}

public void appendText(String text) {
textArea.append(text);
}
}


当然还有一个运行 MainFrame 的 Main 类...

最佳答案

问题是你调用 add(textArea, BorderLayout.CENTER);在您的 MainFrame.java在重构之前。add那里的方法添加了textAreaJFrame的布局.

但之后你不添加 TextPanelJFrame , 但仅限于本地 BorderLayoutJPanel你的延伸。那BorderLayout没有添加到任何地方。

如果您仍然调用 add(textPanel, BorderLayout.CENTER),它应该可以工作。 ;

关于JAVA Swing : Can't add text area to a Border Layout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58942143/

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