1

1 つのメイン クラスと 2 つのサブクラスがある場合

  • サブクラス 1: public class JPanel1 extends JPanel {....適切に初期化された}
  • サブクラス 2: public class JTextArea1 extends JTextArea {... 適切に初期化された}

jframe1.add(new JPanel1()) を実行できるのに jframe1.add(new JTextArea1()) を実行できないのはなぜですか? 適切に初期化された JFrame jframe1 = new JFrame();?

私の目標は、jpanel と jtextarea の両方にデータを出力することです

4

1 に答える 1

2

ここで私の側では、あなたが提起した問題はうまく機能しています。これはあなたが言っていることではないと思うなら、私に知らせてください:-)

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));
    }
}

出力:

SwingExampleImage

于 2013-07-01T05:36:42.823 に答える