Я создаю библиотеку для своих учеников, чтобы создать простой графический интерфейс в Java, , но если они нажмут кнопку в интерфейсе, он должен запустить созданный ими метод.
Есть ли способ сделать это? Я не очень люблю Java, но учебная программа хочет, чтобы я :(Java: access user Сгенерированный код из библиотеки
ответ
Вы можете использовать отражение для запуска своего класса, не требуя, чтобы они реализовали интерфейс, хотя вам все равно придется предоставлять инструкции для ограничения типов аргументов. . только для методов без каких-либо аргументов
java.awt.EventQueue.invokeLater(() -> {
JFrame frm = new JFrame();
JPanel pnl = new JPanel();
frm.add(pnl);
pnl.setLayout(new BoxLayout(pnl, BoxLayout.Y_AXIS));
pnl.add(new JLabel("Class"));
JTextField classField = new JTextField();
pnl.add(classField);
pnl.add(new JLabel("Method"));
JTextField methodField = new JTextField();
pnl.add(methodField);
JTextArea area = new JTextArea();
area.setPreferredSize(new Dimension(300, 300));
JButton btn = new JButton("Run");
pnl.add(btn);
pnl.add(area);
System.setOut(new PrintStream(new OutputStream() {
@Override
public void write(int b) throws IOException {
area.append(new String(new byte[]{(byte) b}));
}
}));
btn.addActionListener(e -> {
try {
Class cls = Class.forName(classField.getText());
Method m = null;
Method ma[] = cls.getDeclaredMethods();
String methodName = methodField.getText().trim();
m = cls.getMethod(methodName,new Class[]{});
Object o = cls.newInstance();
Object mr = m.invoke(o);
if(null != mr) {
area.append("\nreturned "+mr.toString()+"\n");
}
} catch (Exception ex) {
ex.printStackTrace();
area.append("\nException "+ex.getMessage()+"\n");
}
});
frm.pack();
frm.setVisible(true);
});
данный класс, как:
public class StudentClass {
public void print10() {
int sum= 0;
for(int i = 0; i< 10; i++) {
System.out.println("i = "+i);
sum+=i;
}
}
}
будут нужны поля должны быть заполнены StudentClass
и print10
и скомпилированных CLAS s должно быть в вашем пути к классам.
Возможно, лучшим вариантом было бы обучение обработке (https://processing.org/). Это по существу java, поскольку код обработки вставляется в класс java за кулисами, но гораздо более ориентирован на то, чтобы начинающие рисовали графические эскизы. Думаю, вам придется спросить у администрации, пойдут ли они на это, и в какой-то момент ученикам нужно будет написать код, который для них генерируют.
- 1. java FXML сгенерированный код
- 2. Справочный сгенерированный код в Java
- 3. com.android.builder.packaging.DuplicateFileException сгенерированный сгенерированный код
- 4. Как запустить сгенерированный код java frege java?
- 5. PHP User Access
- 6. Websockets control user access
- 7. Игнорировать код java из библиотеки отладки
- 8. Сгенерированный Java код генерирует множество предупреждений
- 9. Объясните этот код сгенерированный Java Swing NetBeans
- 10. CreateAndSend Invoices User Access
- 11. facebook user access token
- 12. Access Variable Control User из формы
- 13. Ссылка на сгенерированный код MATLAB
- 14. Как импортировать java-класс из библиотеки java в код java
- 15. javax.annotation.processing.AbstractProcessor: компилирование сгенерированный код
- 16. Как красиво форматировать сгенерированный код Java
- 17. Rehashing сгенерированный код MD5 в Java
- 18. Как проверить java байт-код, сгенерированный Clojure из repl?
- 19. Добавить информацию заголовка безопасности в Java-код, сгенерированный из WSDL
- 20. Неожиданный сгенерированный код emberjs
- 21. Изменение настроек библиотеки классов C# breaks reference.cs сгенерированный код
- 22. access domain user thru adam
- 23. Сгенерированный код SpecFlow
- 24. Yammer search endpoint user access
- 25. Changin нежелательные HTML из плагина сгенерированный код
- 26. Как удалить сгенерированный код из Netbeans
- 27. Показать сгенерированный код из макроса lisp
- 28. Сохранить рисунок, сгенерированный из HeatMap() из библиотеки биоинформатики - Matlab
- 29. Исследуйте сгенерированный код сборки?
- 30. Сгенерированный автоматический код
Какой код у вас есть? – hotzst
Вы пытаетесь создать редактор Java? Если да, то почему? – Pshemo
У меня есть кнопки TextFields, Labels и ActionListener, который запускает методы. – battler3d