[英]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.