java - JLabel 未出现在 JPanel 中
问题描述
我用 JTextField、JPanel 和一个按钮制作了一个 JFrame,用户在其中输入一个值,单击按钮后,它将根据用户输入生成多个标签,但 JLabel没有出现。我做错了吗?
这是按钮的编码。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String s = jTextField1.getText();
int noSub = Integer.valueOf(s);
addData(noSub);
}
这是添加JLabel的方法。
public void addData(int a){
jPanel1.removeAll();
int num = a;
JLabel jLabel[] = new JLabel[num];
for(int i=0;i<num;i++){
jLabel[i]=new JLabel();
jLabel[i] = new JLabel("Label "+i);
jPanel1.add(jLabel[i]);
jPanel1.revalidate();
jPanel1.repaint();
}
jPanel1.updateUI();
}
解决方案
在这里做了一个简单的工作示例:
public class Sample extends JFrame{
private JTextField inputField;
private JPanel outputPanel;
private Sample() {
JPanel mainPanel = new JPanel(new BorderLayout());
JPanel form = new JPanel(new GridBagLayout());
inputField = new JTextField(3);
JButton submitBtn = new JButton("Enter");
form.add(inputField);
form.add(submitBtn);
mainPanel.add(form, BorderLayout.NORTH);
outputPanel = new JPanel();
mainPanel.add(outputPanel);
submitBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = inputField.getText();
int noSub = Integer.valueOf(text);
addData(noSub);
}
void addData(int data){
outputPanel.removeAll();
JLabel jLabel[] = new JLabel[data];
for(int i=0;i<data;i++){
jLabel[i] = new JLabel("Label "+i);
outputPanel.add(jLabel[i]);
}
outputPanel.revalidate();
outputPanel.repaint();
// No need to call outputPanel.updateUI()
}
});
setSize(400,500);
add(mainPanel);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Sample();
}
}
推荐阅读
- android - 如何从反汇编的 .smali 文件中组装 apk?
- asp.net-core - ASP.NET CORE 2.1 中弹出模式中的 Error.cshtml(使用异常处理中间件)
- python - 将类型从“列表”类更改为整数
- mysql - 在 Django 中查询可能包含以下任何 F、M、T、S、U、X 的 CSV 列
- java - 抑制 Java 异常堆栈跟踪
- typescript - 实例化接口类型的变量
- python - numpy.where 条件选择二维数组中的特定垂直列
- html - HTML 画布线条多种颜色
- c# - Xamarin Xaml C# cross-platform Can't get the image in ScrollView -> AbsoluteLayout -> Image to fill the entire width
- javascript - 反应:为什么将事件对象放在事件处理程序参数的末尾