为什么这段代码的JTextArea占据了整个JFrame?
我希望框架的一部分包含 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;
}
I expect part of my frame contains the JTextArea but it occupies entirely. I cannot trace the error here.
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
JFrame
默认情况下使用BorderLayout
。当您只是将某些内容添加到BorderLayout
组件(例如JFrame
)上时,它会添加到BorderLayout
的正中心(如果您没有指定位置)添加组件),并且它占据了整个JFrame
。您应该使用正确的布局来调整它们。
JFrame
by default usesBorderLayout
. When you just add something onto aBorderLayout
component likeJFrame
, it would add to the very center of theBorderLayout
(if you did not specify where to add the component), and it takes up the entireJFrame
.You should use the correct layout to adjust them.
您可以尝试使用绝对布局。它位于布局托盘上。
或者使用 启用它:
这样,您就可以自由地将控件放置在您喜欢的任何地方。
You can try using Absolute layout. It's on the Layouts Pallet.
Or enable it with :
This way, you can freely place the control anywhere you like.