簡體   English   中英

我如何在一個JFrame中添加兩個擴展JPanel的類

[英]How can i add two class that extends JPanel in One JFrame

我創建了兩個擴展JPanel的類,並希望在一個Frame中添加這兩個類。 但是我做不到。 有人幫忙。

我的課程是->

import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CalButton extends JPanel {
    private JButton[] buttons;
    private static final String[] buttonNames = { "7", "8", "9", "/", "4", "5",
            "6", "*", "1", "2", "3", "-", "0", ".", "=", "+" };
    private JPanel buttonPanel;

    public CalButton() {
        // TODO Auto-generated constructor stub
        buttons = new JButton[buttonNames.length];
        buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(4, 4, 3, 3));

        for(int i=0; i<buttonNames.length; i++){
            buttons[i] = new JButton(buttonNames[i]);
            buttonPanel.add(buttons[i]);

        }
    }
}

另一類->

import java.awt.GridLayout;

import javax.swing.JPanel;
import javax.swing.JTextField;

public class CalField extends JPanel {
    private JPanel panelField;
    private JTextField field;

    public CalField() {
        // TODO Auto-generated constructor stub
        panelField = new JPanel();
        panelField.setLayout(new GridLayout(1, 1,5,5));
        field = new JTextField(20);
        panelField.add(field);

    }
}

主班->

public class Calculator {
    public static void main(String[] args) {

        JFrame application = new JFrame("Calculator");
        CalField calField = new CalField();
        CalButton calButton = new CalButton();
        application.setLayout(new GridLayout(2, 1));

        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.setSize(400, 450);
        application.setVisible(true);
    }
}

請任何人解決這個問題。 我陷入了這個問題。

public CalButton() {
    // TODO Auto-generated constructor stub
    buttons = new JButton[buttonNames.length];
    buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridLayout(4, 4, 3, 3));

    for(int i=0; i<buttonNames.length; i++){
        buttons[i] = new JButton(buttonNames[i]);
        buttonPanel.add(buttons[i]);

    }
}

CalButton類已經“是” JPanel,因為擴展了JPanel,因此無需創建另一個JPanel。 只需將您的按鈕添加到類中即可:

public CalButton() {
    // TODO Auto-generated constructor stub
    buttons = new JButton[buttonNames.length];
    //buttonPanel = new JPanel();
    //buttonPanel.setLayout(new GridLayout(4, 4, 3, 3));
    setLayout(new GridLayout(4, 4, 3, 3));

    for(int i=0; i<buttonNames.length; i++){
        buttons[i] = new JButton(buttonNames[i]);
        //buttonPanel.add(buttons[i]);
        add(buttons[i]);
    }
}

CalcField類相同,除了在這種情況下,您可能不需要設置布局管理器。 您可能可以使用默認的FlowLayout。

然后第二個問題是您永遠不會將這些面板添加到框架中:

    CalField calField = new CalField();
    CalButton calButton = new CalButton();
    //application.setLayout(new GridLayout(2, 1));
    application.add(calField, BorderLayout.PAGE_START);
    application.add(calButton, BorderLayout.CENTER);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM