Этот код также компилируется и выполняется, но метод actionPerformed()
не выполняется должным образом. Я имею в виду, что после нажатия кнопки «ОК» ничего не записано в JTextField
. Действие NO выполняется даже после использования e.getSource()
. System.out.println("I am done ")
работает нормально, но t.setText("Hey there")
не работает.? Что не так с кодом? Пожалуйста, помогите мне, если кто-нибудь сможет.
А также вы можете уточнить, почему, если не добавить JButton
и JTextField
на Panel
не видно? Почему важно добавить панель, чтобы отобразить кнопку и текстовое поле. Без этого не видно почему?Что случилось с моим кодом?
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class A implements ActionListener {
JFrame f;
JButton b;
JPanel p;
JLabel l;
JTextField t;
A(String s) {
JFrame f=new JFrame(s);
f.setVisible(true);
f.setSize(400,400);
JButton b= new JButton("OK");
JTextField t=new JTextField();
JPanel p=new JPanel();
f.add(p);
p.setBounds(0,0,300,300);
p.add(b);
b.setBounds(30,40,80,80);
p.add(t);
t.setBounds(100,200,80,80);
b.addActionListener(this);
t.addActionListener(this);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b) {
t.setText("Hey There");
}
System.out.println("I m done!!");
}
public static void main(String[] args) {
System.out.println("Hey there");
new A("First App");
}
}
* "А также ты можешь .." * Вопрос о SO должен быть один, конкретный вопрос. Другие вопросы лучше начинаются с отдельных потоков. Также: используйте логическую и согласованную форму отступов и блоков кода. Отступы предназначены для того, чтобы поток кода стал проще следовать! –
Обратите внимание, что название вопроса не полезно для нас, поскольку оно не является информативным. «Что не так с моим кодом» ничего не говорит нам о вашей проблеме, кроме проблемы с вами, но мы уже знали это, иначе вас здесь не было бы. В будущем, пожалуйста, работайте над тем, чтобы задавать лучшие вопросы с лучшими названиями. Это поможет вам и нам. –
'f.setVisible (true);' должно быть последним, после 'pack()'. И 'p.setBounds (0, 0, 300, 300),' Java GUIs должны работать на разных ОС, размер экрана, разрешение экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –