Jump to content

1.15.2 How to realize the function of button


Same here

Recommended Posts

 @Override
    protected void init()
    {
        super.init();
        Button.IPressable onPress;
        int offsetX = (this.width - this.xSize) / 2, offsetY = (this.height - this.ySize) / 2;
        this.buttons.add(new Button(offsetX+153,offsetY+17,20,20,"start",(p_212984_1_) -> {
            this.minecraft.displayGuiScreen(this.getMinecraft().currentScreen);})
        {
            @Override
            public void onPress()
            {
                //TODO 
            }
        });

I have made a screen,I want to add a button to do something ,I used anonymous inner classes,but  whatever I write in “todo”,when I pressen the button it didn't work.Did I use the wrong method?Please help me .

Link to comment
Share on other sites

Here is an example of button from IngameMenuScreen class:

this.addButton(new Button(this.width / 2 - 102, this.height / 4 + 24 + -16, 204, 20, new TranslationTextComponent("menu.returnToGame"), (p_213070_1_) -> {
         this.minecraft.displayGuiScreen((Screen)null);
         this.minecraft.mouseHelper.grabMouse();
      }));

This works for sure, find the difference.

Everything said above may be absolutely wrong. No rights reserved.

Link to comment
Share on other sites

15 hours ago, Dzuchun said:

Here is an example of button from IngameMenuScreen class:


this.addButton(new Button(this.width / 2 - 102, this.height / 4 + 24 + -16, 204, 20, new TranslationTextComponent("menu.returnToGame"), (p_213070_1_) -> {
         this.minecraft.displayGuiScreen((Screen)null);
         this.minecraft.mouseHelper.grabMouse();
      }));

This works for sure, find the difference.

Excuse me, is there a more detailed example? I don't quite understand. I often use listeners in Java, but I don't understand how this button works.

Link to comment
Share on other sites

2 hours ago, Same here said:

I often use listeners in Java

Here you don't need this to execute something on button click. Listening is already handled by LWJGL (not sure), so all you need is to specify function that should be executed once button is pressed.

(p_213070_1_) -> {
  this.minecraft.displayGuiScreen((Screen)null);
  this.minecraft.mouseHelper.grabMouse(); 
}

Here is this function. This format is called lambda-expression. Check source code for more context, this code is located at IngameMenuScreen class.

Everything said above may be absolutely wrong. No rights reserved.

Link to comment
Share on other sites

15 hours ago, Dzuchun said:

Here you don't need this to execute something on button click. Listening is already handled by LWJGL (not sure), so all you need is to specify function that should be executed once button is pressed.


(p_213070_1_) -> {
  this.minecraft.displayGuiScreen((Screen)null);
  this.minecraft.mouseHelper.grabMouse(); 
}

Here is this function. This format is called lambda-expression. Check source code for more context, this code is located at IngameMenuScreen class.

My friend, thank you very much for your patience and help me a lot. I looked at the source code before, but I made a fatal mistake. I have been paying attention to lambda and have not used addbutton correctly. Thank you very much for your help.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.