Добавить в JLabel в рамке? - PullRequest
0 голосов
/ 14 июля 2009

Я создал JFrame и теперь хочу добавить JLabel и текстовые поля в нем. Пожалуйста, скажите мне, как это сделать. Я использовал следующий код, но он не работает.

JFrame i_frame = new JFrame("Select Locations");
i_from = new JLabel("From");
i_frame.getContentPane().add(i_from);
i_frame.add(Box.createRigidArea(new Dimension(2,0)));
i_frame.setLocationRelativeTo(null);
i_frame.setSize(200,200);
i_frame.setVisible(true);

Проблема в том, что этот код показывает окно фрейма, но в нем нет метки. Пожалуйста, помогите.

Ответы [ 4 ]

1 голос
/ 14 июля 2009

Это ваш первый вопрос, позже вы спросите:

Как получить значение из моего текстового поля

Итак, я предлагаю вам взглянуть на этот урок

http://java.sun.com/docs/books/tutorial/uiswing/start/index.html

И спросите нас, есть ли у вас вопросы из этого урока. Использование IDE упростит вам жизнь.

В любом случае, это начало:

Java App with Label and Text on OS X

Код:

import javax.swing.*;
import java.awt.Color;

 public class MyApp {
      public static void main( String [] args ) {
          JFrame frame = new JFrame();
          frame.setBackground( new Color(0,0,0,64 ));
          frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

          JPanel top = new JPanel();
          top.add( new JLabel("What is your name"){{ 
                setForeground(Color.white);
          }});
          top.add( new JTextField(10) );
          frame.add( top );

         frame.pack();

         frame.setVisible( true );

     }
}

EDIT Откажитесь от этого ответа. Он был опубликован, когда вопрос был довольно двусмысленным. Я оставляю это как CW, потому что это может быть полезно.

плюс кадры OSX с альфа-фоном слишком крутые!

0 голосов
/ 14 мая 2012

Для добавления JLabel в JFrame см. Строку кода см. Здесь

public class JLabelExample extends JFrame {
JLabel jLabel;
public JLabelExample() {
jLabel = new JLabel();
jLabel.setText("tutorialData.com");
jLabel.setForeground(Color.BLUE);
this.add(jLabel);
}
public static void main(String a[]) {
JLabelExample labelExample = new JLabelExample();
labelExample.setSize(250, 200);
labelExample.setTitle("tutorialData.com");
labelExample.setVisible(true);
}
}

Пожалуйста, обратитесь к JFrame

0 голосов
/ 14 июля 2009

Проблема в том, что вы добавляете второй компонент (Box.createRigidArea) в ту же позицию макета (BorderLayout.CENTER), что и метка.
Результат JFrame.add () совпадает с результатом JFrame.getContentPane (). Add () ...
Таким образом, метка заменяется на RigidArea.
Попробуйте это:

    JFrame i_frame = new JFrame("Select Locations");
    i_from = new JLabel("From");
    i_frame.getContentPane().add(i_from);
    // i_frame.add(Box.createRigidArea(new Dimension(2,0)));
    i_frame.setLocationRelativeTo(null);
    i_frame.setSize(200,200);
    i_frame.setVisible(true);

чтобы добавить больше компонентов, измените LayoutManager:

    JFrame i_frame = new JFrame("Select Locations");
    JLabel i_from = new JLabel("From");
    Container pane = i_frame.getContentPane();
    pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));  // any LayoutManager you need
    pane.add(i_from);
    pane.add(Box.createRigidArea(new Dimension(2,0)));  // space after JLabel ?
    i_frame.setSize(200,200);  // better done before setLocationRelativeTo
    i_frame.setLocationRelativeTo(null);
    i_frame.setVisible(true);

Примечание: если вы «просто» хотите добавить пустую рамку к метке, используйте setBorder () вместо RigidArea:

    i_from.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));

[]]

0 голосов
/ 14 июля 2009

Основной проблемой является макет, используемый областью содержимого (наиболее вероятно JRootPane.RootLayout , пользовательский менеджер макетов, отвечающий за макет LayeredPane, glassPane и menuBar), не лучший , Этот код должен работать;

JFrame i_frame = new JFrame("Select Locations");
JLabel i_from = new JLabel("From");
i_frame.getContentPane().setLayout(new FlowLayout());
i_frame.getContentPane().add(i_from);
i_frame.add(Box.createRigidArea(new Dimension(2,0)));
i_frame.setLocationRelativeTo(null);
i_frame.setSize(200,200);
i_frame.setVisible(true);

установка другого макета делает свое дело

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...