在核心java中创建GUI的问题

时间:2016-12-11 08:22:58

标签: java swing user-interface

我必须使用swing在核心java中创建这种GUI:

enter image description here

在此GUI中:

  

1,2,3,4 ...数字是标签。这些值是固定的。

     

A,B,C,D ......是可编辑的文本字段。用户可以在此处输入任何值。

我的方法:使用表格并在其中放入两个textfeild。但不知道该怎么做。

在核心java中有没有其他简单的方法来实现这个部分?

1 个答案:

答案 0 :(得分:1)

鉴于所显示的要求,nested网格可能是一个有用的起点。

image

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

/**
 * @see https://stackoverflow.com/a/41085019/230513
 */
public class GridTest {

    private static final int N = 12;

    private void display() {
        JFrame f = new JFrame("GridTest");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel(new GridLayout(3, 4));
        for (int i = 0; i < N; i++) {
            panel.add(createPanel(i));
        }
        f.add(new JScrollPane(panel));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    private static JPanel createPanel(int i) {
        JPanel panel = new JPanel(new GridLayout(2, 2, 8, 8));
        panel.setBorder(BorderFactory.createLineBorder(Color.black));
        panel.add(new JLabel(String.valueOf(i)));
        panel.add(new JLabel());
        panel.add(new JLabel());
        panel.add(new JTextField(String.valueOf(Character.valueOf((char) ('A' + i)))));
        return panel;
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new GridTest()::display);
    }
}