如何用Java制作菜单按钮?

如何用Java制作菜单按钮?,java,Java,我已经使文本出现在我用矩形类创建的菜单中。我想知道我是否可以选择文本,您可以用键盘箭头选择您的选择,然后按Enter键,然后它将执行下一个操作。以下是我目前掌握的情况: public Rectangle menuBorder; public Rectangle menu; BufferedImage character; private java.awt.Point characterLocation; private java.awt.Point borderL

我已经使文本出现在我用矩形类创建的菜单中。我想知道我是否可以选择文本,您可以用键盘箭头选择您的选择,然后按Enter键,然后它将执行下一个操作。以下是我目前掌握的情况:

public Rectangle menuBorder;
    public Rectangle menu;
    BufferedImage character;
    private java.awt.Point characterLocation;
    private java.awt.Point borderLocation;
    private java.awt.Point menuLocation;
    public int charW = 24;
    public int charH = 36;
    public int borderW = 210;
    public int borderH = 80;
    public int menuW = 190;
    public int menuH = 60;


    public boolean right = false;
    public boolean left = false;
    public boolean up = false;
    public boolean down = false;

    public Keying(Display f, Images i) throws IOException
    {
        character = ImageIO.read(getClass().getResource("starting mon.png"));
        menuBorder = new Rectangle(10, 10, borderW, borderH);
        menu = new Rectangle(10, 10, menuW, menuH);
        characterLocation = new Point(175, 100);
        borderLocation = new Point(175, 270);
        menuLocation = new Point(185, 280);

//...


    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        this.setBackground(Color.white);
        g.drawImage(character, characterLocation.x, characterLocation.y, this);
        g.setColor(Color.black);
        g.fillRect(borderLocation.x, borderLocation.y, borderW, borderH);
        g.setColor(Color.white);
        g.fillRect(menuLocation.x, menuLocation.y, menuW, menuH);
        g.setColor(Color.black);
        g.setFont(new Font("Arial", Font.BOLD, 20));
        g.drawString("Battle", 190, 305);
        g.drawString("Feed", 320, 305);
        g.drawString("Pet", 200, 335);
        g.drawString("Age", 325, 335);
    }
//...

首先,请看我关于绘画的第一条评论

您需要某种状态变量,以便确定应该绘制的状态,这可以通过使用某种状态变量来实现

您可能需要一个MouseListener和一个MouseMotionListener来监视鼠标的状态,有关更多详细信息,请参阅

你可能还想看看


当然,您只需使用JList即可省去麻烦…请参见不要调用从任何绘制方法中更改组件状态的方法。绘制应绘制当前状态,并且在绘制过程中不应执行任何可能导致该状态发生变化的操作。这样做将导致无限循环的重新绘制请求,这将消耗你的电脑,直到它被吸入一个黑色的holeOkay,谢谢!但就键绑定而言,我有这个游戏的显示,角色和菜单就在它的正下方。为了测试,我让按键使角色移动,但我希望箭头键移动菜单项的选择,就像口袋妖怪中的一样,在所选内容的矩形中有一些轮廓。我不想使用JList,因为它似乎以GUI样式显示,而不是在同一个显示器中。抱歉,评论太长了:/n请使用键绑定并定义激活它们所需的焦点级别。确保它们所连接的组件是可调焦的,并使用RequestFocusInDowalRight切换焦点。酷:我会仔细阅读并试一试,但如果我没有回复“谢谢”,可能是因为我的电脑制造了一个黑洞。