Merhaba, aslında bir olay işleyicisi Jswing
için bir yöntem içinde kullanmaya çalışıyorum ve olay tetiklendiğinde hata alıyorum Hata iş parçacığı içinde "AWT-EventQueue-0
" java.lang.NullPointerException
. GUI sınıfını ekledim, böylece neler olduğunu anlayabiliyorsun. Sorun, setPlayerNameScreen
yöntemiyle ve etkinlik işleyicisiyle ilgilidir. Tutulmayı kullanma."AWT-EventQueue-0" iş parçacığındaki özel durum java.lang.NullPointerException Jswing sorunu
Genellikle googlefu'm gayet güçlüdür, çünkü bu benim ilk kez herhangi bir sitede yardım için gönderim! Bu haha'yı tamir edene kadar devam edemediğim için herhangi bir yardım büyük takdir görüyor.
Düzenleme: Kodun ne yaptığını açıklamalıydı. Bir önceki etkinlikten setPlayerNameScreen
olayı çağrıldığında, mevcut oyuncu sayımızın azami oyuncudan az olup olmadığını kontrol ediyoruz ve eğer varsa, oyuncu adını metin alanında ne olursa olsun değiştirin, set 1'i mevcut oyuncu sayımıza ekleyin ve sıfırlayın metin alanı
//Main game GUI class
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.math.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GameGUI extends JFrame
{
private JPanel startPanel;
private JPanel playerNamePanel;
private JTextField txtPlayerNumber;
GameManager gameMngr;
private int currentPlayer;
/**
* Launch the application.
*/
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
GameGUI frame = new GameGUI();
frame.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public GameGUI()
{
//Setup our game manager object
GameManager gameMngr = new GameManager();
//int for tracking current active player
int currentPlayer = 1;
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
startPanel = new JPanel();
startPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(startPanel);
startPanel.setLayout(null);
JLabel lblTitle = new JLabel("Who Wants To Be a Zillionaire!");
lblTitle.setBounds(5, 5, 424, 14);
lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
startPanel.add(lblTitle);
JLabel lblPlayerNumber = new JLabel("Please Enter How Many Players (max 4)");
lblPlayerNumber.setBounds(99, 55, 243, 92);
lblPlayerNumber.setHorizontalAlignment(SwingConstants.CENTER);
startPanel.add(lblPlayerNumber);
txtPlayerNumber = new JTextField();
txtPlayerNumber.setHorizontalAlignment(SwingConstants.CENTER);
txtPlayerNumber.setBounds(116, 153, 200, 20);
startPanel.add(txtPlayerNumber);
txtPlayerNumber.setColumns(10);
//action listener for game start screen button
JButton btnStart = new JButton("Start!");
btnStart.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
//button has been pressed so pass player count and prepare for player names
int playerCount = Integer.valueOf(txtPlayerNumber.getText());
gameMngr.setPlayerCount(playerCount);
//set current panel invisible
startPanel.setEnabled(false);
startPanel.setVisible(false);
setPlayerNameScreen();
}
});
btnStart.setBounds(171, 200, 89, 23);
startPanel.add(btnStart);
}
private void setPlayerNameScreen()
{
//setup the player name setting panel
playerNamePanel = new JPanel();
playerNamePanel.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(playerNamePanel);
playerNamePanel.setLayout(null);
JLabel lblPlayerName = new JLabel("Player 1 Enter Your Name");
lblPlayerName.setHorizontalAlignment(SwingConstants.CENTER);
lblPlayerName.setBounds(87, 11, 259, 14);
playerNamePanel.add(lblPlayerName);
JTextField txtPlayerName = new JTextField();
txtPlayerName.setHorizontalAlignment(SwingConstants.CENTER);
txtPlayerName.setBounds(172, 81, 86, 20);
playerNamePanel.add(txtPlayerName);
txtPlayerName.setColumns(10);
JButton btnPlayerNameConf = new JButton("OK");
btnPlayerNameConf.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(currentPlayer <= gameMngr.getPlayerCount())
{
gameMngr.addPlayer(txtPlayerName.getText(), currentPlayer);
currentPlayer++;
txtPlayerName.setText("");
lblPlayerName.setText("Player " + currentPlayer + " Enter Your Name");
}
}
});
btnPlayerNameConf.setBounds(172, 142, 89, 23);
playerNamePanel.add(btnPlayerNameConf);
}
}
Edit2: Tam hata
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GameGUI$3.actionPerformed(GameGUI.java:132)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Tam istisna yığını izleme? Ayrıca, sorunuzu doğru bir şekilde etiketleyin. – bcsb1001
Etiketler şimdi daha iyi mi? Üzgünüm, daha önce hiç yayınlamadım. Unuttuğum hatadan sonra uzun bir eşya listesi demek istedim. Şimdi onu düzenliyorum. – Feetz
GameGUI.java'da hangi hattın hat 132 olduğunu belirtebilir misiniz? – bcsb1001