Собственно в названии вопроса и проблема. У меня есть несколько классов. Вот первый
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GraphicalDisplay {
private JFrame frame;
private JLabel titleLabel1;
private JLabel titleLabel2;
private JLabel titleLabel3;
private JLabel titleLabel4;
private JLabel titleLabel5;
private TextField text;
private Button button;
private JLabel titleLabel6;
public GraphicalDisplay(String title1, String title2, String title3, String title4) {
buildFrame();
titleLabel1.setText(title1);
titleLabel2.setText(title2);
titleLabel3.setText(title3);
titleLabel6.setText(title4);
}
private void buildFrame() {
frame = new JFrame("Графический дисплей");
frame.setPreferredSize(new Dimension(800, 300));
frame.setLayout(new GridLayout(8, 1));
titleLabel1 = new JLabel();
titleLabel2 = new JLabel();
titleLabel3 = new JLabel();
titleLabel6 = new JLabel();
text = new TextField("", 50);
button = new Button("Ввести");
button.addActionListener((ActionListener) this);
frame.add(titleLabel1);
frame.add(titleLabel2);
frame.add(titleLabel3);
frame.add(text);
frame.add(button);
frame.add(titleLabel6);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setAlwaysOnTop(true);
frame.setVisible(true);
frame.pack();
}
@Override
public void mouseClicked(ActionEvent e) {
getText1();
}
public String getText1() {
String textbutton = text.getText();
return textbutton;
}
public void setText4(String text) {
titleLabel6.setText(text);
}
}
И вот второй
import java.awt.event.MouseEvent;
import java.util.HashSet;
public class SupportSystem
{
private InputReader reader;
private Responder responder;
public GraphicalDisplay display1;
public SupportSystem()
{
reader = new InputReader();
responder = new Responder();
}
public void start()
{
boolean finished = false;
printWelcome();
while(!finished) {
String textbutton = display1.mouseClicked(MouseEvent);
HashSet<String> input = reader.getInput(textbutton);
if(input.contains("exit")==true) {
finished = true;
}
else {
String response = responder.generateResponse(input);
System.out.println(response);
}
}
printGoodbye();
}
public void printWelcome()
{
display1 = new GraphicalDisplay("Добро пожаловать в техподдержку DodgySoft.", "Расскажите нам о вашей проблеме.", "Введите 'exit' для выхода из системы.","");
}
private void printGoodbye()
{
display1.setText4("Приятно было пообщаться. До свидания...");
}
}
Изучая то, что есть в интернете находил всякие обработчики, слушатели, ивенты и т.д. Сам не могу понять как это должно даже выглядеть, не говоря уже о том чтобы работало. Помогите!
Для получения текста из JFrame поля используйте метод .getText() и записывайте этот текст в String переменную. Например, есть такой код.
private JTextField output = new JTextField();
private String getteroftext;
output.setText("Текст, который нужно получить");
getteroftext = output.getText();
Далее делаем, что хотим со строкой, в ней будет текст из поля output
Обработку нажатия на кнопку графического интерфейса можно делать таким образом.
// Реализуем кнопку стирание
// Объявляем кнопку с текстом "С"
private JButton backspace = new JButton("C");
// Добавляем "Ослеживатель события"
backspace.addActionListener(new ActionListener() {
// Используем переопределение
@Override
// Добавляем событие нажатия на кнопку e — название события
public void actionPerformed(ActionEvent e) {
// объявляем временную переменную, содержащую текст из поля output
String tmp =output.getText();
/* Задаем полю output текст из переменной tmp посимвольно,
от символа с индексом 0 до (индекс последнего символа в
строке-1)*/
output.setText(tmp.substring(0,tmp.length()-1));
}
});
Если нужно обработать нажатие на какую-то клавишу, скажем F1...F9 или Tab, Space и так далее, используют команду виртуальной кнопки
VK_НазваниеКнопки
Например так
// Реализуем ручной ввод
private void manualInput() {
ActionListener l = (ActionEvent button_is_presed)->{
JButton b =(JButton) button_is_presed.getSource();
output.setText(output.getText()+b.getText());
};
for(JButton b :numbers){
b.addActionListener(l);
}
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e){
char symvol = e.getKeyChar();
if(symvol==KeyEvent.VK_BACK_SPACE){
String tmp =output.getText();
output.setText(tmp.substring(0,tmp.length()-1));
Если Вам нужно записать в поле output текст с клавиатуры, я бы посоветовал сделать так
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e){
char symvol = e.getKeyChar();
Обрабатываем нажатие на кнопку мыши
// Делаем наш класс наследником класса MouseAdapter
public class SupportSystem extends MouseAdapter {
// Далее можем использовать все методы класса-родителя
// Пишем свой код... ...доходим до обработки события нажатия на мышь
// Используем метод mousePresed
public void mousePresed(MouseEvent mouse_is_presed){
// Пишем что должно происходить при возникновении события
// mouse_is_presed
}
// Не забываем закрыть класс
}
Если нужно закрыть окно по нажатию на "Крестик", то существуют специальные функции, и мышь вам в этом случае трогать не надо. Закрытие приложения делается так
private JFrame ourMainFrame;
// Задаем размеры, делаем окно видимым и задаем другие параметры...
// ... Доходим до параметра поведения при нажатии на "крестик"
ourMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Собственно говоря, суть моего вопроса можно свести к следующему: почему мы в обязательном порядке должны присваивать начальное значение...
хочу поставить гласфиш на вин10,понятное дело вылетает предупредение permsize=192,эта опция была убрана в 8й яве и бла бла бларешение этой проблемы...