Проблема с окном на JAVA
55 повідомлень
#14 років тому
Здравствуйте.Учу я Java, попробовал запустить пример из книги, который
должен открывать окно с кнопками и оформленный текст.
Вот код:
import java.awt.*;
import java.awt.event.*;
class Book {
String title;
int price;
Book ( String s, int i ) {
this.title = s;
this.price = i;
}
}
public class Lab1 extends Frame implements ActionListener {
Book book;
Button b1 = new Button("Exit");
Button b2 = new Button("Create Object");
Button b3 = new Button("Show Object");
public static void main ( String args ) {
Lab1 f = new Lab1();
f.resize(500,500);
f.setVisible(true);
}
public void Lab1 () {
setLayout (null);
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
setBackground(new Color(120,120,120));
}
public void actionPerformed (ActionEvent e) {
if (e.getSource() == b1) {
System.exit(0);
} else {
if (e.getSource() == b2){
if (book == null){
book = new Book("Pinoccio", 200);
} else {
System.out.println ("The object already exits");
}
} else {
if (e.getSource() == b3) {
if (book != null) {
Graphics g = getGraphics();
Font fnt = new Font ("Courier", Font.BOLD,24);
g.setFont(fnt);
setForeground ( new Color( 250, 0, 0 ) );
g.drawString( book.title.toUpperCase(), 20, 200 );
}
}
}
}
}
}
Однако, при выполнении, открывается просто белое окно (которое, кстати, не закрывается).
Вот думаю, в чём проблема.
Вот моя переписка с компилятором:
C:\Program Files\Java\jdk1.6.0_21\bin>javac Lab1.java
Note: Lab1.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
C:\Program Files\Java\jdk1.6.0_21\bin>javac Lab1.java -Xlint
Lab1.java:26: warning: resize(int,int) in java.awt.Component has been deprecated
f.resize(500,500);
^
Lab1.java:17: warning: serializable class Lab1 has no definition of serialVersionUID
public class Lab1 extends Frame implements ActionListener {
^
2 warnings
Пробовал yandex, не помог.
Зараннее, спасибо.
12 повідомлень
#14 років тому
1. Метод resize() устарел, надо использовать setSize(), то есть f.setSize(500,500)2. На второе предупреждение можно не обращать внимания. Чтобы избавиться от него можно добавить строку:
public static final long serialVersionUID = 24362462L;в переменные класса.
3. Конструктор класса должен быть объявлен так:
public Lab1 () {...
4. Чтобы кнопки отображались корректно, надо заменить
setLayout (null);на
setLayout (new FlowLayout());