我希望框架的一部分包含JTextArea,但它会完全占据。我无法在此处追踪错误。
import java.awt.*; import javax.swing.*; public class EchoServer { public static void main(String args[]) { CalcFrame c = new CalcFrame(); CalcTextArea a = new CalcTextArea(); } } class CalcTextArea { JTextArea historyDisplayer = new JTextArea("",50,20); CalcTextArea() { //historyDisplayer.setVisible(true); historyDisplayer.insert("Hello World", 0); Color bg = new Color(23,34,56); historyDisplayer.setBackground(bg); historyDisplayer.setBackground(bg); } } class CalcFrame extends CalcTextArea { JFrame frame = new JFrame(); CalcFrame() { frame.setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); frame.setTitle("CALCULATOR"); frame.setVisible(true); frame.add(historyDisplayer); } private static int DEFAULT_WIDTH = 299,DEFAULT_HEIGHT = 190; }
JFrame默认使用BorderLayout。当您仅将类似的东西添加到BorderLayout组件时JFrame,它将添加到的正中间BorderLayout(如果您未指定添加组件的位置),它将占据整个JFrame。
JFrame
BorderLayout
您应该使用正确的布局进行调整。