Für ein Spiel, das ich mache, möchte ich, dass der Player auf einem Menübildschirm (Panel05) beginnt und dann auf eine Schaltfläche klickt, um das eigentliche Spiel zu starten (Panel00). Und wenn sie das Spiel spielen, wenn sie gewinnen oder verlieren, wenn sie auf eine andere Taste klicken, gehen sie entweder zurück zum Menü oder gehen auf eine andere Ebene. Im Moment sind die Panels alle separate Programme mit ihren eigenen Treibern, und ich bin mir nicht sicher, wie man ein Panel innerhalb eines anderen in Betrieb nehmen kann, wenn das überhaupt möglich ist. Ich würde mich über alle möglichen Ratschläge, Antworten oder Kritiken freuen. Unten ist das Panel für das MenüWie bekomme ich ein Panel in einem anderen Panel?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
public class Panel05 extends JPanel
{
private BufferedImage myImage;
private Graphics myBuffer;
public JButton button1;
public Panel05()
{
myImage = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
myBuffer = myImage.getGraphics();
setLayout(null);
button1 = new JButton();
button1.setSize(100, 100);
button1.setLocation(500,500);
button1.setForeground(Color.WHITE);
button1.setFont(new Font("Serif", Font.BOLD, 30));
button1.setText("Start");
button1.addActionListener(new B1Listener());
button1.setBorder(null);
button1.setOpaque(false);
button1.setContentAreaFilled(false);
button1.setBorderPainted(false);
add(button1);
setFocusable(true);
}
public void paintComponent(Graphics g)
{
ImageIcon Nintendo = new ImageIcon("trumpL.png");
g.drawImage(Nintendo.getImage(), 0, 0, 1000, 1000, null);
}
private class B1Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
}
Und hier ist das Panel für die eigentliche erste Ebene des Spiels.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.Timer;
public class Panel00 extends JPanel
{
private BufferedImage myImage;
private Graphics myBuffer;
public Timer timer;
public JButton button1;
public JButton button2;
public JLabel label1 = new JLabel("Good Choice!");
public JLabel label2 = new JLabel("You're Fired!!");
public int x = 5; //CountDown from 5
public int delay = 1000; //milliseconds
boolean drawWin = false;
boolean drawLose = false;
public Panel00()
{
myImage = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
myBuffer = myImage.getGraphics();
setLayout(null);
button1 = new JButton();
button1.setSize(300, 200);
button1.setLocation(100,150);
button1.setFont(new Font("Serif", Font.BOLD, 18));
button1.setText("<html><center>"+"Until we are able to determine and understand this problem"+"<br>"+" and the dangerous threat it poses, our country cannot be the victims of horrendous attacks"+"<br>"+"by people that believe only in Jihad, and have no sense of reason or respect for human life"+"</center></html>");
button1.addActionListener(new B1Listener());
button1.setBorder(null);
button1.setOpaque(false);
button1.setContentAreaFilled(false);
button1.setBorderPainted(false);
add(button1);
button2 = new JButton();
button2.setSize(300, 200);
button2.setLocation(600,150);
button2.setFont(new Font("Serif", Font.BOLD, 18));
button2.setText("<html><center>"+"If ISIS wants to fight, fine with us. "+"<br>"+"We have wanted that fight for a long time. There is no room in the world for ISIS any more."+"<br>"+"The Muslims or us, one of us will have to go."+"</center></html>");
button2.addActionListener(new B2Listener());
button2.setBorder(null);
button2.setOpaque(false);
button2.setContentAreaFilled(false);
button2.setBorderPainted(false);
add(button2);
ActionListener counter =
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
repaint();
x--;
if (x == 0)
{
timer.stop();
}
}
};
timer = new Timer(delay, counter);
timer.start();
setFocusable(true);
}
public void paintComponent(Graphics g)
{
ImageIcon Nintendo = new ImageIcon("trump speech.jpg");
g.drawImage(Nintendo.getImage(), 0, 0, 1000, 1000, null);
ImageIcon N = new ImageIcon("happy.JPG");
g.setColor(Color.WHITE);
g.fillOval(90,100,320,320);
g.setColor(Color.WHITE);
g.fillOval(590,100,320,320);
g.setColor(Color.WHITE);
g.setFont(new Font("Serif",Font.BOLD, 50));
g.drawString(""+x,500,50);
if (drawWin)
{
g.drawImage(N.getImage(), 0, 0, 1000, 1000, null);
}
ImageIcon L = new ImageIcon("loser.JPG");
if (drawLose)
{
g.drawImage(L.getImage(), 0, 0, 1000, 1000, null);
}
}
private class B1Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
repaint();
drawWin = true;
label1.setLocation(250,650);
label1.setSize(1000, 400);
label1.setForeground(new Color(212, 175, 55));
label1.setFont(new Font("Serif", Font.BOLD, 100));
add(label1);
button1.setEnabled(false);
button2.setEnabled(false);
button1.setText("");
button2.setText("");
timer.stop();
}
}
private class B2Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
repaint();
drawLose = true;
label2.setLocation(500,700);
label2.setSize(400, 400);
label2.setForeground(Color.RED);
label2.setFont(new Font("Serif", Font.BOLD, 40));
add(label2);
button1.setEnabled(false);
button2.setEnabled(false);
button1.setText("");
button2.setText("");
timer.stop();
}
}
}
Könnten Sie erklären, wo Konstante in dem neuen Kartenlayout JPanel geht und was es tut genau? – JH97
@ JH97: zuerst lesen [das Tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html), dann versuchen, es zu lösen, dann, wenn immer noch stecken, zeigen Sie Ihren Code und Ihre spezifische Frage. –
Ich habe mehrere Stunden damit verbracht, Cardlayout anhand der Beispiele zu verstehen, und ich verstehe es einfach nicht. Ich habe 6 Zeilen Code gemacht und bin seitdem festgefahren. Ich verstehe, was das Ziel ist und was es zu tun ist, aber ich weiß nicht, wie ich es anwenden soll auf das, was ich versuche, selbst mit all deiner Hilfe. Alle Beispiele scheinen sich wirklich von meinen zu unterscheiden und verwenden viele Begriffe, mit denen ich nicht vertraut bin. Ich bin mir sicher, dass ich alles rechtzeitig erfahren werde, aber für den Moment fühle ich mich nur wie ein Idiot und verwirre mich. – JH97