Guten Tag,
Ich habe ein Problem, nämlich versuche ich ein Chat Programm zu schreiben und habe dazu ein GUI mit klassischer Chat-Fenster Struktur als Anzeigefeld benutze ich eine JTextArea welche ich in ein JScrollPane packe damit ich wenn das Anzeigefeld vollgeschrieben ist einfach scrollen kann.
Nun möchte ich mit dem Button "Send" die Nachricht welche im Eingabefeld steht ins Anzeigefeld pasten. Dies mache ich mit textArea.append("test");
Um die Änderung im GUI zu aktualisieren führe ich den Befehl JScrollPane.repaint(); auf jedoch funktioniert das überhaupt nicht. ;(
Was muss ich tun?
Hier mein Code
Ich habe ein Problem, nämlich versuche ich ein Chat Programm zu schreiben und habe dazu ein GUI mit klassischer Chat-Fenster Struktur als Anzeigefeld benutze ich eine JTextArea welche ich in ein JScrollPane packe damit ich wenn das Anzeigefeld vollgeschrieben ist einfach scrollen kann.
Nun möchte ich mit dem Button "Send" die Nachricht welche im Eingabefeld steht ins Anzeigefeld pasten. Dies mache ich mit textArea.append("test");
Um die Änderung im GUI zu aktualisieren führe ich den Befehl JScrollPane.repaint(); auf jedoch funktioniert das überhaupt nicht. ;(
Was muss ich tun?
Hier mein Code
Java:
public class GUI {
// create JFrame
JFrame jFrame = new JFrame("Chat");
// create JPanels and JScrollPane
JPanel pnl_menu = new JPanel();
JPanel pnl_text_area = new JPanel();
JPanel pnl_input_and_send = new JPanel();
JScrollPane scrollPane = new JScrollPane();
// create JButton
JButton sendButton = new JButton("Send");
// create JTextField and JTextArea
final JTextField inputText = new JTextField(20);
final JTextArea textArea = new JTextArea("", 15, 25);
// create Menu Elements
JMenuBar mb = new JMenuBar();
JMenu mnuFile = new JMenu("File");
JMenuItem mnuItemQuit = new JMenuItem("Quit");
public void init() {
// setFont
jFrame.setFont(new Font("Helvetica", Font.PLAIN, 12));
configureTextArea();
configureScrollPane();
pnl_text_area.setPreferredSize(new Dimension(200, 400));
addToJPanel(pnl_text_area, pnl_input_and_send);
addToJFrame(pnl_menu, pnl_text_area, pnl_input_and_send);
// Menu
jFrame.setJMenuBar(mb);
mnuFile.add(mnuItemQuit);
mb.add(mnuFile);
mnuItemQuit.addActionListener(new ListenMenuQuit());
// JFrame settings
jFrame.setResizable(false);
jFrame.addWindowListener(new ListenCloseWdw());
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (inputText.getText() != null && inputText.getText() != " ") {
textArea.append(inputText.getText() + "\n");
scrollPane.repaint();
}
}
});
}
private void configureScrollPane() {
scrollPane.add(textArea);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setWheelScrollingEnabled(true);
scrollPane.setPreferredSize(new Dimension(300, 390));
}
private void configureTextArea() {
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
}
private void addToJPanel(JPanel pnl_text_area, JPanel pnl_input_and_send) {
pnl_input_and_send.add(inputText);
pnl_text_area.add(scrollPane);
pnl_input_and_send.add(sendButton);
}
private void addToJFrame(JPanel pnl_menu, JPanel pnl_text_area, JPanel pnl_input_and_send) {
jFrame.getContentPane().setLayout(new BorderLayout());
jFrame.getContentPane().add(pnl_menu, BorderLayout.NORTH);
jFrame.getContentPane().add(pnl_text_area, BorderLayout.CENTER);
jFrame.getContentPane().add(pnl_input_and_send, BorderLayout.SOUTH);
}
public class ListenMenuQuit implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
public class ListenCloseWdw extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
public void launchFrame() {
// Display Frame
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack(); // Adjusts panel to components for display
jFrame.setVisible(true);
}
public static void main(String args[]) {
GUI gui = new GUI();
gui.init();
gui.launchFrame();
}
}
Zuletzt bearbeitet von einem Moderator: