2

宿題の追加クレジットとして、JTabbedPane を作成し、2 つの Jpanel を追加しています。私は非常に近いように感じますが、それでもコンパイルされません。実行すると、両方の JPanels が開きますが、JTabbedPane は開きません。多くの不明なソース エラーが発生します。この時点で、JPanels 自体が JFrames であり、JFrames を JPanels に変換しようとした (失敗したと思います) ため、私の問題であると思われます。

JTabbedPaneAssignment は、JTabbedPane を作成し、一方のタブに DayGui アプリを、もう一方のタブに OfficeAreaCalculator アプリを 2 つのペインに入力することになっています。ここでは、JTabbedPaneAssignment クラスと DayGui クラスのみを含めます。コードが多すぎる場合は申し訳ありません。不要と思われる多くのコードを削除しましたが、まだ多すぎる可能性があります。

これが呼び出しクラス JTabbedPaneAssignment です

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JTabbedPaneAssignment extends JPanel
{
    public JTabbedPaneAssignment()
    {
        //super(new GridLayout(1, 1));

        JTabbedPane tabbedPane = new JTabbedPane();
        DayGui pnlDay = new DayGui();
        OfficeAreaCalculator  pnlOffice = new OfficeAreaCalculator ();
        this.add(tabbedPane);

        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        tabbedPane.add(panel1,"First panel");
        tabbedPane.add(panel2,"Second panel");


        //JComponent panel1 = makeTextPanel("Pane #1");
        panel1.setPreferredSize(new Dimension(300, 150));
        tabbedPane.addTab("DayGui", panel1);
        tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);

        //JComponent panel2 = makeTextPanel("Pane #2");
        panel2.setPreferredSize(new Dimension(410, 50));
        tabbedPane.addTab("OfficeAreaCalculator", panel2);
        tabbedPane.setMnemonicAt(1, KeyEvent.VK_2);
        add(tabbedPane);
    }

    protected JComponent makeTextPanel(String text)
    {
        JPanel panel = new JPanel(false);
        JLabel filler = new JLabel(text);
        filler.setHorizontalAlignment(JLabel.CENTER);
        panel.setLayout(new GridLayout(1, 1));
        panel.add(filler);
        return panel;
    }

    // Create JTabbedPane
    private static void createAndShowGUI()
    {
        // Create and set up the window.
        JFrame frame = new JFrame("JTabbedPane");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JTabbedPaneAssignment(), BorderLayout.CENTER);
        JTabbedPane DayGui = new JTabbedPane();
        JTabbedPane OfficeAreaCalculator = new JTabbedPane();
        frame.pack();
        frame.setVisible(true);
    }


    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
    }
}

ここに DayGui クラスがあります。JFrame として開始されましたが、JPanel に変換しようとしています。私の問題はコードのこのセクションにあると思いますが、わかりません

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

//public class DayGui extends JPanel
public class DayGui extends JPanel
{
    private JPanel dayPanel;
    private JButton cmdGood;
    private JButton cmdBad;

    public DayGui()
    {
        //dayPanel = new JPanel("Messages");

        cmdGood = new JButton("Good");
        cmdBad = new JButton("Bad");

        Container c = dayPanel.getRootPane();
        c.setLayout(new FlowLayout());

        c.add(cmdGood);
        c.add(cmdBad);

        dayPanel.setSize(300, 150);

        ButtonsHandler bhandler = new ButtonsHandler();
        cmdGood.addActionListener(bhandler);
        cmdBad.addActionListener(bhandler);

        dayPanel.setVisible(true);
        dayPanel.getRootPane().setBackground(Color.CYAN);

    }

    class ButtonsHandler implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if (e.getSource() == cmdGood)
                JOptionPane.showMessageDialog(null, "Today is a good day!",
                        "Event Handler Message",
                        JOptionPane.INFORMATION_MESSAGE);
            if (e.getSource() == cmdBad)
                JOptionPane.showMessageDialog(null, "Today is a bad day!",
                        "Event Handler Message",
                        JOptionPane.INFORMATION_MESSAGE);
        }
    }

}
4

3 に答える 3