有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在核心java中创建GUI时的swing问题

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

enter image description here

在此GUI中:

1, 2, 3, 4... numbers are labels. These values are fixed.

A, B, C, D... are editable textfield. User can enter any value here.

我的方法是:使用表格并在其中放入两个文本字段。但我不知道怎么做

有没有其他简单的方法可以在核心java中实现这一部分


共 (1) 个答案

  1. # 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);
        }
    }