Hallo Leute.
Ich stehe vor einem seltsamen Problem:
Und zwar habe ich ein JFrame Fenster im FullScreenExclusiveMode.
Jetzt wollte ich da 2 JTextfields reinzeichnen lassen. Hab in meinem Frame PaintComponents verwendet.
Jetzt wenn ich die Anwendung starte, wird alles schöngezeichnet. Jedoch flackert der Background (BgColor) und sobald man Zeichen in die Textboxen eingibt, flackern diese auch. Nach einiger Zeit, bekomme ich einen FreezeScreen und muss das Programm unterbrechen. Ich hab alles mögliche versucht.
Könnt Ihr mir helfen?
Hier der Quelltext:
Viele Grüße Radiac
Ich stehe vor einem seltsamen Problem:
Und zwar habe ich ein JFrame Fenster im FullScreenExclusiveMode.
Jetzt wollte ich da 2 JTextfields reinzeichnen lassen. Hab in meinem Frame PaintComponents verwendet.
Jetzt wenn ich die Anwendung starte, wird alles schöngezeichnet. Jedoch flackert der Background (BgColor) und sobald man Zeichen in die Textboxen eingibt, flackern diese auch. Nach einiger Zeit, bekomme ich einen FreezeScreen und muss das Programm unterbrechen. Ich hab alles mögliche versucht.
Könnt Ihr mir helfen?
Hier der Quelltext:
Java:
package Main;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class NetState extends GameState implements ActionListener {
private JTextField txtUsername;
private JTextField txtPassword;
private JButton btnBack;
private JPanel pnlNet;
public NetState(ScrollGame game) {
super(game);
}
@Override
public void init() {
txtUsername = new JTextField();
txtPassword = new JTextField();
txtUsername.setPreferredSize(new Dimension(200, 20));
txtPassword.setPreferredSize(new Dimension(200, 20));
btnBack = new JButton("Zurück");
//btnBack.setPreferredSize(new Dimension(100, 20));
btnBack.setVerifyInputWhenFocusTarget(false);
btnBack.registerKeyboardAction(btnBack.getActionForKeyStroke(
KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, false)),
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false),
JComponent.WHEN_FOCUSED);
btnBack.registerKeyboardAction(btnBack.getActionForKeyStroke(
KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0, true)),
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, true),
JComponent.WHEN_FOCUSED);
pnlNet = new JPanel(true);
//pnlNet.setLayout(new FlowLayout(FlowLayout.CENTER));
pnlNet.add(txtUsername);
pnlNet.add(txtPassword);
pnlNet.add(btnBack);
}
@Override
public void onLoad() {
scrollGame.getContentPane().add(pnlNet);
btnBack.addActionListener(this);
}
@Override
public void onUnload() {
btnBack.removeActionListener(this);
scrollGame.getContentPane().remove(pnlNet);
}
@Override
public void doLogic(long delta) {
if (isKeyHit(KeyEvent.VK_ESCAPE)) {
changeGameState(scrollGame.menuState);
}
else if (isKeyHit(KeyEvent.VK_ENTER)) {
if (btnBack.isFocusOwner()) {
changeGameState(scrollGame.menuState);
}
}
}
@Override
public boolean render(Graphics g) {
//g.clearRect(0, 0, screenWidth(), screenHeight());
return true; // bei true wird dann super.paint aufgerufen
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnBack) {
changeGameState(scrollGame.menuState);
scrollGame.requestFocus();
}
}
}
Viele Grüße Radiac