Witam :)
Napisałem krótką aplikacje używając SWING'a (JTextField, JButton i JLabel) i AWT. Problem zaczyna się gdy używam rysowania (Graphic gDC), wtedy znikają mi wszystkie elementy JFrame. Teoretycznie pokazują się gdy odnajdę je kursorem na ślepo. Proszęo podpowiedź jak mogę to naprawić :)
A tak wygląda aplikacja:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JApp extends JFrame
{
private JTextField textFieldKilometry, textFieldLitry;
private JButton buttonLicz;
private JLabel labelWynik;
String spalanie = "Spalanie";
Font spalanieFont = null;
Font opisFont = null;
String kilometry;
public void paint(Graphics gDC)
{
gDC.setFont(spalanieFont);
FontMetrics rozmiarCzcionki = gDC.getFontMetrics();
int spalanieSzerokosc = rozmiarCzcionki.stringWidth("Spalanie");
int spalanieWysokosc = rozmiarCzcionki.getHeight();
int srodekX = (getWidth() - spalanieSzerokosc) / 2;
int srodekY = (getHeight() + spalanieWysokosc) / 2;
gDC.clearRect(0, 0, getSize().width, getSize().height);
gDC.drawString(spalanie, srodekX, 60);
gDC.setFont(opisFont);
gDC.drawString("Podaj przejechane kilometry:", 30, 100);
gDC.setFont(opisFont);
gDC.drawString("Podaj ilość litrów zatankowanego paliwa:", 30, 130);
gDC.setFont(opisFont);
gDC.drawString("Spalanie na 100 kilometrów to:", 30, 225);
}
public JApp()
{
ActionListener buttonLiczAL = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == buttonLicz)
kilometry = textFieldKilometry.getText();
double km = Double.parseDouble(kilometry);
System.out.println(kilometry);
}
};
setLayout(null);
textFieldKilometry = new JTextField();
textFieldKilometry.setBounds(300, 55, 100, 20);
textFieldLitry = new JTextField();
textFieldLitry.setBounds(300, 85, 100, 20);
buttonLicz = new JButton("Oblicz");
buttonLicz.setBounds(150, 130, 100, 20);
buttonLicz.addActionListener(buttonLiczAL);
labelWynik = new JLabel("JApp");
labelWynik.setBounds(150, 150, 100, 50);
add(textFieldKilometry);
add(textFieldLitry);
add(buttonLicz);
add(labelWynik);
}
public static void main(String[] args)
{
JApp main = new JApp();
main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
main.setSize(420, 300);
main.setVisible(true);
}
}