Napotkałem się z pewnym problemem.
Mój mały programik jest podzielony na 4 klasy.
- klasę "rozruchową"
- klasę z ramką
- klasę przycisków
- klasę z oknem do wyświetlania tekstu
Kody
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Ramka extends JFrame{
public static final int WIDTH = 220;
public static final int HEIGHT = 310;
public Ramka(){
super("Kalkulator 1.0.0");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(new Dimension(WIDTH, HEIGHT));
setLocation(500,500);
JPanel wPanel = new WindowPanel();
JPanel bPanel = new ButtonPanel();
setLayout(new BorderLayout());
add(wPanel, BorderLayout.NORTH);
add(bPanel);
bPanel.setLayout(null);
setVisible(true);
setResizable(false);
}
}
import java.awt.Font;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
public class ButtonPanel extends JPanel implements ActionListener{
private JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;
Font myFont = new Font("Arial",Font.PLAIN, 16);
WindowPanel txtOut = new WindowPanel();
public ButtonPanel(){
int Width = 40;
int Height = 30;
b9 = new JButton("9");
b9.setBounds( 90, 40, Width, Height);
b9.setMargin(new Insets(0, 0, 0, 0));
b9.setFont(myFont);
b9.addActionListener(this);
//(...)
// Reszta przycisków.
b1 = new JButton("1");
b1.setBounds( 4, 110, Width, Height);
b1.setMargin(new Insets(0, 0, 0, 0));
b1.setFont(myFont);
b1.addActionListener(this);
add(b9);
add(b8);
add(b7);
add(b6);
add(b5);
add(b4);
add(b3);
add(b2);
add(b1);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == b1)
txtOut.tf.setText(txtOut.tf.getText() + "1");
}
}
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WindowPanel extends JPanel {
protected JTextField tf;
public WindowPanel() {
tf = new JTextField();
tf.setPreferredSize(new Dimension(206, 45 ));
tf.setHorizontalAlignment(JTextField.RIGHT);
add(tf);
}
}
Chciałem przez utworzenie obiektu klasy WindowPanel móc wpisywać tekst do okienka JTextFrame.
Konstruktor jest bez przekazywanych mu wartości, gdyż potem w klasie Ramka jest tworzony jego obiekt typu Panel.
JPanel wPanel = new WindowPanel();
Co zrobić, aby zachować oddzielną klasę dla okienka, leczy aby móc wyświetlać klikane znaki na wyświetlaczu?