0
我试图创建一个JPanel,当发生特定操作时在框架上弹出。 JFrame和JPanel是在两个不同的类中创建的,我不能为了我的生活而弄清楚如何正确地使用它们。当我现在运行代码时,当动作发生时,只有一个微小的JPanel出现在JFrame的顶部角落,它只显示基本的MAC出口,最小化和最大化按钮。无法从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