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

时间:2016-07-20 17:44:10

标签: java user-interface exception jlabel jtextfield

我有一个带有名字列表的文本文件。我正在尝试创建一个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();

    }
}

2 个答案:

答案 0 :(得分:1)

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

选项二是使用更加用户友好的布局管理器,不需要像GridBagLayout那样。 Bellow你可以看到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();

    }
}

答案 1 :(得分:0)

首先你应该使用JTextArea来输入文本,因为它可以存储段落。阅读文件:

textArea.append(textToDisplay);
然后把它放到你必须做的gui中:

{{1}}