| 

.NET C# Java Javascript Exception

0
Hey Leute,

ich hab ein kleines Programm erstellt, das dir einfach random Antworten gibt.
doch immer wenn ich das Programm als .jar starte habe ich kein JTextArea, erst wenn ich
die Größe meines Fensters verstelle updatet sich das Fenster und mein JTextArea erscheint.

Hier der Code:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.util.*;

public class Main implements KeyListener {

private JFrame frame;
private JTextArea textArea;
private JScrollPane scroll;
private String a,b,c,d,e,newLine;

public static void main(String[] args0){
Main m = new Main();
}

public Main(){
int x = 800;
int y = 500;

Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();

int width = (int) (dimension.getWidth() - x) / 2;
int hight = (int) (dimension.getHeight() - y) / 2;

frame = new JFrame("Start");
frame.setLayout(null);
frame.setResizable(true);
frame.setLocation(width, hight);
frame.setSize(800,500);
frame.setVisible(true);

textArea = new JTextArea();
textArea.addKeyListener(this);
JScrollPane scroll = new JScrollPane(textArea);
scroll.setBounds(0,0,(frame.getWidth()-18),(frame.getHeight()-34));
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

frame.getContentPane().add(scroll);

a = "Ja.";
b = "Nein.";
c = "Vielleicht.";
d = "Warscheinlich.";
e = "Eher nicht.";
newLine = "\n";
}

public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER){
RandomAnswer();
}
}

private void RandomAnswer(){
Random r = new Random();
int answer = (int)r.nextInt((5 - 1) + 1) + 1;
switch (answer) {
case 1: textArea.append(newLine + a);
break;
case 2: textArea.append(newLine + b);
break;
case 3: textArea.append(newLine + c);
break;
case 4: textArea.append(newLine + d);
break;
case 5: textArea.append(newLine + e);
break;
default: textArea.append(newLine + d);
break;
}
answer = 0;
}
}


Vielen dank schon mal.

[Edit]"Schlagwörter" ergänzt[/Edit]
18.06.2015
Dechasa 1 1
3 Antworten
0
Entweder du rufst setVisible erst auf, nachdem du das JTextArea hinzugefügt hast oder du renderst das JFrame neu, nachdem du das JTextArea hinzugefügt hat.

Variante 1:
// ...
frame.setSize(800,500);
// frame.setVisible(true); hier nicht
textArea = new JTextArea();
// ...
frame.getContentPane().add(scroll);
frame.setVisible(true); // sondern hier
// ...

Variante 2:
// ...
frame.getContentPane().add(scroll);
frame.repaint(); // JFrame neu rendern
// ...


Das verändern der Fenstergröße führt zu einem erneuten rendern der GUI-Elemente, darum wird das JTextPanel dann erst dargestellt. Mit Variante 1 wird das JFrame erste gerendert wenn das JTextPanel bereits exisitert und eingebunden ist. Mit Variante 2 wird das JFrame neu gerendert nachdem das JTextPanel hinzugefügt wurde.
18.06.2015
phg 1,6k 3
0
If you are don't know about how to hack whatsapp account online then visit our webpage and generate an online whatsapp hacker to hack any whatsapp account within minute.
19.06.2017
0
Play styles and preferences across xbox one xblivecodes.net and MIcrosoft pc games. at the heart of direct x 12 is than ever before maximizing use of existing graphics hardware.
10.07.2017

Stelle deine Java-Frage jetzt!