Сначала я вызвал свою панель внутри JFrame.Все работало просто отлично.
Теперь я хотел вызвать панель из другого класса, чтобы переключиться на другие панели в одном и том же JFrame после выбора одного из них.Проблема, которая возникла у меня, заключается в следующем:
JFrame никак не реагирует на изменения, которые я установил для панели.Ни при изменении размера, например, внутри класса Panel, ни при изменении размера в классе JFrame.
Панель всегда расширяется по размеру JFrame, как Flowlayout.Но попытка изменить компоновку также не сработала и не должна иметь никакого значения, так как Panel работала раньше (при кодировании внутри JFrame, а не в отдельном классе).
Как исправить код вчтобы я мог настроить панель и заставить JFrame распознавать эти изменения?В настоящее время я использую Eclipse и NetBeans;не работает ни в одном из них.
Main:
package calculatorXtreme;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
public class Main {
public static void main(String[] args) {
Interface interface1 =new Interface();
interface1.show();
}
}
Панель:
package calculatorXtreme;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class PannelDez extends JPanel {
JLabel text = new JLabel();
JButton delete = new JButton();
JButton zero = new JButton();
JButton eins = new JButton();
JButton zwei = new JButton();
JButton drei = new JButton();
JButton vier = new JButton();
JButton fuenf = new JButton();
JButton sechs = new JButton();
JButton sieben = new JButton();
JButton acht = new JButton();
JButton neun = new JButton();
JButton addieren = new JButton();
JButton subtrahieren = new JButton();
JButton multiplizieren = new JButton();
JButton dividieren = new JButton();
JButton ergebnis = new JButton();
JTextField anzeige = new JTextField();
String erg = "";
int temp1;
RechnerInt interfaceRechner = new RechnerInt();
public PannelDez() {
//Panel
this.setSize(400, 500);
anzeige.setBounds(125,100, 200, 50);
anzeige.setSize(200, 50);
anzeige.setEditable(false);
anzeige.setText(erg);
this.add(anzeige);
//Buttons
delete.setText("C");
zero.setText("0");
eins.setText("1");
zwei.setText("2");
drei.setText("3");
vier.setText("4");
fuenf.setText("5");
sechs.setText("6");
sieben.setText("7");
acht.setText("8");
neun.setText("9");
addieren.setText("+");
subtrahieren.setText("-");
multiplizieren.setText("*");
dividieren.setText("/");
ergebnis.setText("=");
this.add(delete);
this.add(zero);
this.add(eins);
this.add(zwei);
this.add(drei);
this.add(vier);
this.add(fuenf);
this.add(sechs);
this.add(sieben);
this.add(acht);
this.add(neun);
this.add(addieren);
this.add(subtrahieren);
this.add(multiplizieren);
this.add(dividieren);
this.add(ergebnis);
delete.addActionListener(new ListenDelete());
zero.addActionListener(new ListenZero());
eins.addActionListener(new ListenEins());
zwei.addActionListener(new ListenZwei());
drei.addActionListener(new ListenDrei());
vier.addActionListener(new ListenVier());
fuenf.addActionListener(new ListenFuenf());
sechs.addActionListener(new ListenSechs());
sieben.addActionListener(new ListenSieben());
acht.addActionListener(new ListenAcht());
neun.addActionListener(new ListenNeun());
addieren.addActionListener(new ListenAddieren());
subtrahieren.addActionListener(new ListenSubtrahieren());
multiplizieren.addActionListener(new ListenMultiplizieren());
dividieren.addActionListener(new ListenDividieren());
ergebnis.addActionListener(new ListenErgebnis());
/* JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout()); */
}
public void resizeButtons()
{
delete.setBounds(225, 350, 50, 50);
zero.setBounds(175, 350,50,50);
eins.setBounds(125, 300,50,50);
zwei.setBounds(175, 300,50,50);
drei.setBounds(225, 300,50,50);
vier.setBounds(125, 250,50,50);
fuenf.setBounds(175, 250,50,50);
sechs.setBounds(225, 250,50,50);
sieben.setBounds(125, 200,50,50);
acht.setBounds(175, 200,50,50);
neun.setBounds(225, 200,50,50);
addieren.setBounds(275, 300,50,50);
subtrahieren.setBounds(275, 250,50,50);
multiplizieren.setBounds(275, 200,50,50);
dividieren.setBounds(275, 150,50,50);
ergebnis.setBounds(275, 350,50,50);
}
class ListenDelete implements ActionListener {
public void actionPerformed (ActionEvent e) {
interfaceRechner.operators.clear();
interfaceRechner.numbers.clear();
interfaceRechner.numbersInt.clear();
anzeige.setText("");
}
}
class ListenZero implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "0");
erg = anzeige.getText();
}
}
class ListenEins implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "1");
erg = anzeige.getText();
return;
}
}
class ListenZwei implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "2");
erg = anzeige.getText();
}
}
class ListenDrei implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "3");
erg = anzeige.getText();
}
}
class ListenVier implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "4");
erg = anzeige.getText();
}
}
class ListenFuenf implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "5");
erg = anzeige.getText();
}
}
class ListenSechs implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "6");
erg = anzeige.getText();
}
}
class ListenSieben implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "7");
erg = anzeige.getText();
}
}
class ListenAcht implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "8");
erg = anzeige.getText();
}
}
class ListenNeun implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
anzeige.setText(erg + "9");
erg = anzeige.getText();
}
}
class ListenAddieren implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
interfaceRechner.addNumber(Integer.valueOf(erg));
interfaceRechner.addOperators("+");
anzeige.setText("");
erg = null;
}
}
class ListenSubtrahieren implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
interfaceRechner.addNumber(Integer.valueOf(erg));
interfaceRechner.addOperators("-");
anzeige.setText("");
erg = null;
}
}
class ListenMultiplizieren implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
interfaceRechner.addNumber(Integer.valueOf(erg));
interfaceRechner.addOperators("*");
anzeige.setText("");
erg = null;
}
}
class ListenDividieren implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
interfaceRechner.addNumber(Integer.valueOf(erg));
interfaceRechner.addOperators("/");
anzeige.setText("");
erg = null;
}
}
class ListenErgebnis implements ActionListener {
public void actionPerformed (ActionEvent e) {
erg = anzeige.getText();
interfaceRechner.addNumber(Integer.valueOf(erg));
interfaceRechner.addOperators("=");
anzeige.setText(""+interfaceRechner.berechneInt());
}
}
}
JFrame:
package calculatorXtreme;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.plaf.ColorUIResource;
import javax.swing.JButton;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Dimension;
public class Interface extends JFrame {
public Interface(){
// PanelAdden
PannelDez panel2 = new PannelDez();
//panel2.setSize(400, 500);
this.setSize(700, 800);
panel2.setSize(300, 200);
this.setVisible(true);
this.setResizable(false);
panel2.setSize(400, 500);
panel2.setBounds(0, 0, 400, 500);
panel2.resizeButtons();
this.add(panel2);
// Menüleiste
JMenuBar jmb = new JMenuBar();
this.setJMenuBar(jmb);
JMenu file = new JMenu("Option");
jmb.add(file);
JMenuItem dez = new JMenuItem("Dezimal-Rechner");
file.add(dez);
JMenuItem hex = new JMenuItem("Hex-Rechner");
file.add(hex);
this.setVisible(true);
}
}
RechnerInt:
package calculatorXtreme;
import java.util.ArrayList;
import java.util.List;
public class RechnerInt {
List<String> numbers = new ArrayList<>();
List<String> operators = new ArrayList<>();
List<Double> numbersDouble = new ArrayList<>();
List<Integer> numbersInt = new ArrayList<>();
double zahl1, zahl2, ergebnis;
String op;
boolean abbruch = true;
public double rechnen(String op, double zahl1, double zahl2)
{
switch (op) {
case "+":
ergebnis = zahl1 + zahl2;
return ergebnis;
case "-":
ergebnis = zahl1 - zahl2;
return ergebnis;
case "/":
ergebnis = zahl1 / zahl2;
return ergebnis;
case "*":
ergebnis = zahl1 * zahl2;
return ergebnis;
}
return ergebnis;
}
public double meineNemesis() {
zahl1 = numbersDouble.get(0);
for (int i = 1; i <= numbersDouble.size(); i++)
{
op = operators.get(i - 1);
if (op.equals("=")) {
return zahl1;
}
zahl2 = numbersDouble.get(i);
zahl1 = rechnen(op, zahl1, zahl2);
}
return -80085;
}
public int berechneInt()
{
zahl1 = numbersInt.get(0);
for (int i = 1; i <= numbersInt.size(); i++)
{
op = operators.get(i - 1);
if (op.equals("=")) {
return (int)zahl1;
}
zahl2 = numbersInt.get(i);
zahl1 = rechnen(op, zahl1, zahl2);
}
return -80085 ;
}
public void addNumber(int i)
{
numbersInt.add(i);
}
public void addOperators(String op)
{
operators.add(op);
}
}
Большое спасибо заранее