Swing 将JTextArea添加到JFrame
如果我有1个主类和2个子类Swing 将JTextArea添加到JFrame,swing,jframe,jpanel,awt,jtextarea,Swing,Jframe,Jpanel,Awt,Jtextarea,如果我有1个主类和2个子类 子类1:公共类JPanel1扩展JPanel{…正确初始化} 子类2:公共类JTextArea1扩展了JTextArea{…正确初始化} 为什么我可以执行jframe1.add(new JPanel1())而不能执行jframe1.add(new jtextraea1())?对于正确初始化的JFrame jframe1=new JFrame() 我的目标是将数据同时输出到jpanel和jtextarea。在我这方面,您提出的问题运行良好。如果您认为这不是您的意思,
- 子类1:公共类JPanel1扩展JPanel{…正确初始化}
- 子类2:公共类JTextArea1扩展了JTextArea{…正确初始化}
我的目标是将数据同时输出到jpanel和jtextarea。在我这方面,您提出的问题运行良好。如果您认为这不是您的意思,请务必让我知道:-) 输出:
为什么要继承这两个类来完成这项工作?为什么仅仅作文是不够的?在继续之前,您需要先问以下问题…:-)但是,如果没有更改
JFrame
的布局(即BorderLayout
),则在任何给定位置只能添加一个组件。在本例中,这两个组件都添加到中心位置。此外,您是否尝试过重写继承类中这两个组件的?如果没有,那么就这样做,让他们返回一些真正的维度对象,比如return(新维度(300300))
。将JPanel和JTextArea组合成一个类?。我已经添加了它们,使得jpanel位于layout.center,而jtextarea位于layout.east。请确实查看答案,我希望这可以消除疑问:-)谢谢!我没有覆盖维度。setPreferredSize不适合我。非常欢迎您继续微笑:-)
import java.awt.*;
import javax.swing.*;
public class SwingExample
{
private CustomPanel customPanel;
private CustomTextArea customTextArea;
private void displayGUI()
{
JFrame frame = new JFrame("Swing Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(5, 5));
contentPane.setBorder(
BorderFactory.createLineBorder(
Color.DARK_GRAY, 5));
customPanel = new CustomPanel();
customTextArea = new CustomTextArea();
contentPane.add(customPanel, BorderLayout.CENTER);
contentPane.add(customTextArea, BorderLayout.LINE_START);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args)
{
Runnable runnable = new Runnable()
{
@Override
public void run()
{
new SwingExample().displayGUI();
}
};
EventQueue.invokeLater(runnable);
}
}
class CustomPanel extends JPanel
{
private static final int GAP = 5;
public CustomPanel()
{
setOpaque(true);
setBackground(Color.WHITE);
setBorder(BorderFactory.createLineBorder(
Color.BLUE, GAP, true));
}
@Override
public Dimension getPreferredSize()
{
return (new Dimension(300, 300));
}
}
class CustomTextArea extends JTextArea
{
private static final int GAP = 5;
public CustomTextArea()
{
setBorder(BorderFactory.createLineBorder(
Color.RED, GAP, true));
}
@Override
public Dimension getPreferredSize()
{
return (new Dimension(100, 30));
}
}