为什么我会收到此错误:java.lang.OutOfMemoryError:无法创建屏幕外表面

时间:2013-04-21 16:46:11

标签: java swing

我认为我的错误是我的showGreeting()方法。特别是在试试中。当用户按下Get Greeting按钮时,我希望它显示一个对话框,显示“Greetings,FirstName + MI + LastName”当用户将字段留空时,我创建的出现错误,该工作正常,但我不明白为什么我的正常问候不起作用。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class GreetingApp extends JFrame {
    private static final long serialVersionUID = 1L;
    private final JTextField firstNameField,middleNameField,lastNameField;
    private final JButton greetingButton;
    public GreetingApp() {
        super("Greetings");
        this.firstNameField = new JTextField(8);
        this.middleNameField = new JTextField(8);
        this.lastNameField = new JTextField(8);
        this.greetingButton = new JButton("Get Greeting"); 
        greetingButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(final ActionEvent ae){
                showGreeting();
            }
        });
        final Container mainPanel = getContentPane();
        mainPanel.setLayout(new BorderLayout());
        final JPanel inputPanel = new JPanel();
        final JPanel buttonPanel = new JPanel();
        inputPanel.setLayout(new GridLayout(3,3,2,2));
        buttonPanel.setLayout(new BorderLayout());
        JSeparator sep = new JSeparator();
        inputPanel.add(new JLabel("First Name: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(firstNameField);
        inputPanel.add(new JLabel("MI: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(middleNameField);
        inputPanel.add(new JLabel("Last Name: "),JLabel.LEFT_ALIGNMENT);
        inputPanel.add(lastNameField);
        mainPanel.add(inputPanel,BorderLayout.PAGE_START);
        buttonPanel.add(sep,BorderLayout.PAGE_START);
        buttonPanel.add(greetingButton);
        mainPanel.add(buttonPanel,BorderLayout.PAGE_END);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    private String getFullName() throws IllegalStateException{
        if(firstNameField.getText().trim().length() == 0){
            throw new IllegalArgumentException("First name cannot be blank");
        }
        if(middleNameField.getText().trim().length() == 0){
            throw new IllegalArgumentException("Middle name cannot be blank");
        }
        if(lastNameField.getText().trim().length() == 0){
            throw new IllegalArgumentException("Last name cannot be blank");
        }
        return "Greetings, "+this.firstNameField+" "+ this.middleNameField +". "+this.lastNameField+"!";
    }
    private void showGreeting(){

        try{
            String message = getFullName();
            JOptionPane.showMessageDialog(this, message, "Greetings",JOptionPane.PLAIN_MESSAGE);
       }catch(final IllegalArgumentException iae){
           JOptionPane.showMessageDialog(this,
                   iae.getMessage(),
                   "Error",
                   JOptionPane.ERROR_MESSAGE);
       }

    }
    public static void main(String[] args) {
        GreetingApp g = new GreetingApp();
    }

}

编辑: 没关系,伙计们得到它我必须添加一个.getText() return“Greetings”,+ this.firstNameField +“”+ this.middleNameField +“。”+ this.lastNameField +“!”; 在每个字段之后实际从中获取文本

1 个答案:

答案 0 :(得分:0)

没关系,伙计们得到它我必须添加.getText()返回“Greetings”,+ this.firstNameField +“”+ this.middleNameField +“。”+ this.lastNameField +“!”;在每个字段之后实际从中获取文本