Проблема с отображением JLabels - PullRequest
1 голос
/ 08 мая 2011

Привет, я новичок в java и пытаюсь создать форму для проекта колледжа. Я нахожусь на ранних стадиях разработки, и у меня работают текстовые поля, но мой ярлык не виден. Кроме того, мои текстовые области слишком большие, растягивая весь мой Jframe. Вот мой код смородины Этот Jframe открывается автоматически, когда пользователь регистрируется в предыдущем классе с именем (java.java.) Этот класс называется (AddProperty.java)

package Main;

/**
 *
 * @author Graeme
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;

public class AddProperty
{

    public void gui()
    {

        JFrame frame = new JFrame("AddPropertyFrame");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,600);
        JPanel panel = new JPanel();
        frame.add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

        JLabel HouseNumber = new JLabel();
        panel.add(HouseNumber);
        JTextField HouseNumber1 = new JTextField();
        panel.add(HouseNumber1);

        JLabel HousePrice = new JLabel();
        panel.add(HousePrice);
        JTextField HousePrice1 = new JTextField();
        panel.add(HousePrice1);

        JLabel HouseType = new JLabel();
        panel.add(HouseType);
        JTextField HouseType1 = new JTextField();
        panel.add(HouseType1);

        JButton submit = new JButton("Submit");
        panel.add(submit);
        submit.addActionListener(new Action());
    }

    static class Action implements ActionListener{

        public void actionPerformed (ActionEvent e)
        {

            JFrame frame2 = new JFrame("Submitted");
            frame2.setVisible(true);
            frame2.setSize(200,200);
            JLabel label = new JLabel("You Have Submitted a New Property");
            JPanel panel = new JPanel();
            frame2.add(panel);
            panel.add(label);


        }

    }

}

Спасибо, любой совет будет высоко ценится.

Ответы [ 3 ]

1 голос
/ 09 мая 2011

Смотрите комментарии в коде.

Изменено AddProperty.java

/**
 *
 * @author Graeme
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.EmptyBorder;

public class AddProperty
{

    public void gui()
    {

        JFrame frame = new JFrame("AddPropertyFrame");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // having to set sizes of components is rare, and often a sign    
        // of problems with layouts.
        //frame.setSize(800,600);
        JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 20,20));
        // make it big like the original
        panel.setBorder(new EmptyBorder(100,20,100,20));
        frame.add(panel);
        //panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

        JLabel HouseNumber = new JLabel("A");
        panel.add(HouseNumber);
        JTextField HouseNumber1 = new JTextField(10);
        panel.add(HouseNumber1);

        JLabel HousePrice = new JLabel("B");
        panel.add(HousePrice);
        JTextField HousePrice1 = new JTextField(10);
        panel.add(HousePrice1);

        JLabel HouseType = new JLabel("C");
        panel.add(HouseType);
        JTextField HouseType1 = new JTextField(5);
        panel.add(HouseType1);

        JButton submit = new JButton("Submit");
        panel.add(submit);
        submit.addActionListener(new Action());

        // tell the GUI to assume its natural (minimum) size.
        frame.pack();
    }

    static class Action implements ActionListener{

        public void actionPerformed (ActionEvent e)
        {
            // this should probably be a modal JDialog or JOptionPane.
            JFrame frame2 = new JFrame("Submitted");
            frame2.setVisible(true);
            frame2.setSize(200,200);
            JLabel label = new JLabel("You Have Submitted a New Property");
            JPanel panel = new JPanel();
            frame2.add(panel);
            panel.add(label);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                AddProperty addProperty = new AddProperty();
                addProperty.gui();
            }
        });
    }
}

Снимок экрана

enter image description here

1 голос
/ 09 мая 2011

Причина, по которой ваши JLabels не отображаются, заключается в том, что для них нет значения для показа.

попробуйте добавить значение при вызове его конструктора, например;

new JLabel("House Nummber"); 
1 голос
/ 08 мая 2011

Я считаю, что JLabels не видны, потому что им нечего показать в них ...

попробуйте установить значение для JLabel при вызове его конструктора ... хотя это только мое предположение ...

new JLabel("House Nummber");
...