有 Java 编程相关的问题?

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

java如何从文件中读入并在GUI中的文本字段/标签中显示?

我有一个文本文件,里面有一个名字列表。我试图创建一个GUI,然后将文件中的文本读入GUI,并将其显示在textfield/label/anything中。我可以创建GUI并读入代码,但不知道如何在GUI中显示读入文本。下面是我的代码。当我运行时,它会显示GUI,但不会显示读入文本

public class ASSIGNMENT {

    private JLabel lbl1;
    private JTextField txt1;
    private JPanel panel;
    private JFrame frame;

    public ASSIGNMENT(){
        createGUI();
        addLabels();

        frame.add(panel); 
        frame.setVisible(true);
    }

    public void createGUI(){ 
        frame = new JFrame();
        frame.setTitle("Books");
        frame.setSize(730, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        panel = new JPanel();
        panel.setLayout(null);
        panel.setBounds(10, 10, 10, 10);
        panel.setBorder(BorderFactory.createLineBorder (Color.decode("#1854A2"), 2));
        frame.add(panel);
    }

    public void addLabels(){
        lbl1 = new JLabel(" ");
        lbl1.setBounds(700, 450, 120, 25);
        lbl1.setForeground(Color.white);
        panel.add(lbl1);
    }

    public void books() throws IOException{
        String result = "books2.txt";
        String line;
        LineNumberReader lnr = new LineNumberReader(new FileReader(new File("books2.txt")));
        while((line = lnr.readLine()) != null){
            result += line;
        }
        JLabel label1 = new JLabel(result);
        panel.add(label1);
    }


    public static void main(String[] args) throws Exception{
        new ASSIGNMENT();

    }
}

共 (1) 个答案

  1. # 1 楼答案

    你好,这是你的代码。基本上需要正确设置布局管理器。你有两个选择选项一是设置NULL和布局管理器。在这种情况下,需要使用setBounds()定位所有组件

    第二个选项是使用一个更加用户友好的布局管理器,它不需要像GridBagLayout这样的功能。下面,你可以看到你的代码为GridBagLayout进行了修改。我重复一遍,让null作为管理者是可能的,但是你需要在setBounds的帮助下用坐标来定位元素

    public class ASSIGNMENT3 {
    
        private JLabel lbl1;
        private JTextField txt1;
        private JPanel panel;
        private JFrame frame;
    
        public ASSIGNMENT3() throws IOException{
            createGUI();
            addLabels();
            books();
    
            frame.add(panel); 
            frame.setVisible(true);
        }
    
        public void createGUI(){ 
            frame = new JFrame();
            frame.setTitle("Books");
            frame.setSize(730, 500);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            panel = new JPanel();
            panel.setLayout(new GridBagLayout());
            panel.setBounds(10, 10, 10, 10);
            panel.setBorder(BorderFactory.createLineBorder (Color.decode("#1854A2"), 2));
            frame.add(panel);
        }
    
        public void addLabels(){
            lbl1 = new JLabel("Labe 1 ");
            lbl1.setBounds(700, 450, 120, 25);
            lbl1.setForeground(Color.white);
            panel.add(lbl1);
        }
    
        public void books() throws IOException{
            String result = "books2.txt";
            String line;
    //        LineNumberReader lnr = new LineNumberReader(new FileReader(new File("books2.txt")));
    //        while((line = lnr.readLine()) != null){
    //            result += line;
    //        }
    //        
            txt1 = new JTextField(20);
            txt1.setText(result);
            JLabel label1 = new JLabel(result);
            panel.add(label1);
            panel.add(txt1);
        }
    
    
        public static void main(String[] args) throws Exception{
            new ASSIGNMENT3();
    
        }
    }