When I click on a Java button object in MATLAB, why does it not evaluate its callback?

1 次查看(过去 30 天)
When I click on a Java button object in MATLAB, why does it not evaluate its callback?
The callback function for my Java button object is not responding to the button click.
What is the correct way to implement this?
I am using the following code:
function my_java_test()
import java.awt.*
import java.awt.event.*
import javax.swing.*;
f = JFrame(sprintf('Houston... we have a problem'));
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
b = JButton('Hello');
set(b,'ActionPerformedCallback', {@doHelloButtonClicked});
f.getContentPane.add(b)
f.pack
f.show
function doHelloButtonClicked(src, data)
src.setLabel(sprintf('Roger that... pizza has been ordered'));

采纳的回答

MathWorks Support Team
This issue can be resolved by explicitly passing the handle of the JButton object to the callback function. This will be the callback function's third input argument.
This is illustrated below:
function my_java_test()
import java.awt.*
import java.awt.event.*
import javax.swing.*;
f = JFrame(sprintf('Houston... we have a problem'));
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
b = JButton('Hello');
% set(b,'ActionPerformedCallback', {@doHelloButtonClicked});
set(b,'ActionPerformedCallback', {@doHelloButtonClicked, b}); % Here, b is passed as an argument
f.getContentPane.add(b)
f.pack
f.show
function doHelloButtonClicked(src, data, b ) % Now, b is the third argument to the callback function
b.setLabel(sprintf('Roger that... pizza has been ordered'));

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by