Я новый ученик Java.Почему мой JLabel не показан?
Я создаю приложение GUI.
Этот класс получает номер от пользователя и показывает таблицу на фрейме.
Когда я запускаю свой класс, я ввожу число и нажимаю JButton, но JLabel на моем кадре не отображается.
Это не показывает мне почему нет.
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.event.*;
//this Frame class use the association
class Frame {
JFrame f;
JButton jb,jbclear;
JTextField jt;
JLabel jl1[]=new JLabel[10];
EventHandler hand=new EventHandler();
//constructor
Frame(){
f=new JFrame("Hello");
f.setSize(500,500);
f.setLayout(null);
JLabel jl=new JLabel("Enter the number");
jl.setBounds(30,10,100,20);
f.getContentPane().add(jl);
jt=new JTextField();
jt.setBounds(170,10,50,20);
f.add(jt);
jb=new JButton("Click");
jb.setBounds(270,50,80,30);
f.add(jb);
jb.addActionListener(hand);
jbclear=new JButton("Clear");
jbclear.setBounds(270,90,80,30);
f.add(jbclear);
jbclear.addActionListener(hand);
f.setVisible(true);
}
class EventHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==jb){
int num=Integer.parseInt((jt.getText()));
for(int i=0;i<10;i++){
int n=(num*i);
String s=String.valueOf(num)+" X "+i+" = "+n;
jl1[i]=new JLabel(s);
}
for(int i=0,k=80;i<10;i++){
jl1[i].setBounds(30,k,150,10);
f.add(jl1[i]);
jl1[i].setVisible(true);
k=k+30;
}
}
if(e.getSource()==jbclear){
for(int i=0;i<10;i++){
jl1[i].setText("");
}
}
}
}
public static void main(String [] args){
new Frame();
}
}
Можно ли добавить компонент после создания и отображения JFrame?
', но они не добавляются в container.': они добавляются в кадр да, следовательно, они добавляются в контейнер , – Sage
@Sage вы правы, что их добавили в фрейм, но добавление непосредственно к фрейму работает с java 6. Предыдущим версиям нужен контейнер, поэтому лучше определить контейнер и использовать его. – StanislavL