0
特定のアクションが発生したときにフレームにポップアップするJPanelを作成しようとしています。 JFrameとJPanelは別々の2つのクラスで作成されており、私の人生にとっては、それらを適切に利用する方法を理解できません。アクションが発生するとすぐにコードを実行すると、小さなJPanelがJFrameの上隅に表示され、基本的なmac exit、minimize、およびmaximizeボタンのみが表示されます。誰もが素晴らしいだろうと、私はおそらく非常に悪い構成されたコードで私を助けることができる場合JFrameからJPanelを正しく作成できない
JFrameの
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Gui extends JFrame
{
private JFrame mainFrame = new JFrame("Robber - Main menu");
private JFrame gameFrame = new JFrame("Robber - Game");
private final int WINDOW_SIZE_WIDTH = 905;
private final int WINDOW_SIZE_HEIGHT = 940;
public void setMainFrame()
{
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(900,900);
mainFrame.setResizable(false);
}
public void setGameFrame()
{
gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameFrame.setSize(WINDOW_SIZE_WIDTH, WINDOW_SIZE_HEIGHT);
gameFrame.setResizable(false);
}
public void endGame()
{
NameBox name = new NameBox();
name.setVisible(true);
gameFrame.add(name);
のJPanelとコードでコードが
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NameBox extends JPanel implements KeyListener
{
private String name;
private JTextField userInput = new JTextField(10);
private JPanel centerPanel;
private JLabel centerText;
public NameBox()
{
centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 15));
centerText = new JLabel("<html><center>" +"0"+ "<br /><center>Enter your name</html>" , JLabel.CENTER);
centerText.setFont(new Font("Britannic Bold", Font.PLAIN, 18));
centerText.setForeground(new Color(230,180,14));
centerPanel.add(centerText);
setLocation(327,407);
setSize(250, 125);
userInput.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent evt)
{
if(evt.getKeyCode() == KeyEvent.VK_ENTER)
{
submitAction();
}
}
});
centerPanel.add(userInput);
Box theBox = Box.createVerticalBox();
theBox.add(Box.createVerticalStrut(10));
theBox.add(centerPanel);
add(theBox);
}
public void submitAction()
{
name = userInput.getText();
}
public String getName()
{
return name;
}
public static void main(String[] args)
{
new NameBox().setVisible(true);
}
@Override
public void keyTyped(KeyEvent e){}
@Override
public void keyReleased(KeyEvent e){}
@Override
public void keyPressed(KeyEvent e){}
}
です!
'のKeyListenerを使用しないでください'のための' JTextField'は 'ActionListener'を使用しています。 – MadProgrammer
あなたの問題を理解した上で、' JDialog'を使ってポップアップウィンドウを表示したいのです。 – MadProgrammer
最初のコメントについて@MadProgrammerなので、ユーザーが入力をプッシュしたときにそれを検出したい場合でも、代わりにActionListenersを使用する必要がありますか? – mikecal7