Java: пользовательский интерфейс

tit1976

Привет!
Я сейчас пишу калькулятор на Java и в данный момент делаю окно. Я пишу так:
 
package calculator;
import java.awt.*;
import javax.swing.*;
public class Okno extends JFrame{
private JButton digit1 = new JButton("1");
//и т.д.
 public static void main(String[] args){
    Okno calc = new Okno;
    calc.setSize(200,200);
    calc.show;
  }
public void init{
setLayout(new GridLayout(3,3;
//А вот кнопки сюда добавить не получается. Как это сделать?
}
  

pitrik2

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

Svyatogor

Добавлять так:

add(digit1);
или
this.add(digit1);
или
getContentPane.add(digit1);

На JDK5 (Java 2) все эти варианты должны работать. В предыдущих правильнее getContentPane.setLayout(new GridLayout(3,3; getContentPane.add(digit1);...
Кроме того, если это JDK5, то не calc.show а calc.setVisible(true метод show является deprecated.
Ну и для полноты картины вместо

Okno calc = new Okno;
calc.setSize(200,200);
calc.show;

стоит писать

SwingUtilities.invokeLater(new Runnable {
public void run {
Okno calc = new Okno;
calc.setSize(200,200);
calc.show;
}
});

Это более потокобезопасно. Подробнее: How to Use Threads

tit1976

Я написал так исправленный вариант, но всё-равно ничего не получается:

package calculator;
import java.awt.*;
import javax.swing.*;
public class Okno extends JFrame {
private JButton digit2 = new JButton("2");
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable {
public void run {
Okno calc = new okno;
calc.setSize(200,200);
calc.setVisible(true);
}});}

public void init{

getContentPane.setLayout(new GridLayout(3,3;

getContentPane.add(digit2);
getContentPane.setVisible(true);
}
}

Svyatogor

Ну так правильно, init то ниоткуда не вызывается.
Правильно так:

package calculator;

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

public class Okno extends JFrame {
private JButton digit2 = new JButton("2");
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable {
public void run {
Okno calc = new Okno;
calc.setSize(200,200);
calc.setVisible(true);
}});
}

public Okno {
getContentPane.setLayout(new GridLayout(3,3;
getContentPane.add(digit2);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}

Ну а раз вы только начинаете (не разбираетесь, что такое конструктор и т.п. то для начала вам сюда: Trail: Learning the Java Language, затем сюда: Trail: Creating a GUI with JFC/Swing, после этого можно писать пользовательские интерфейсы.
Ну и кроме этого есть The Java™ Tutorials неплохого качества.
Оставить комментарий
Имя или ник:
Комментарий: