moin
ich habe mit netbeans ein jframe gemacht, darauf ein jpanel und dann scrollpane mit textarea und 2knöpfe
folgender quelltext ist daraufhin entstanden, das programm kommuniziert mit einem server und die main-methode befindet sich in einem ausgelagerten teil des programmes.
problem ist, das der nicht von selbst nachscrollt, wenn ein signal ausgegeben wird.
frage1. woran liegt das?
frage2. wie kann man es beheben?
danke schonmal im vorraus
edit: bei dem generator vom programm habe ich sowohl bei den scrollpanes, als auch bei der textarea autoscroll auf true gesetzt
ich habe mit netbeans ein jframe gemacht, darauf ein jpanel und dann scrollpane mit textarea und 2knöpfe
folgender quelltext ist daraufhin entstanden, das programm kommuniziert mit einem server und die main-methode befindet sich in einem ausgelagerten teil des programmes.
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* NewJFrame.java
*
* Created on 10.11.2011, 17:25:02
*/
package client;
import NetEngine.client;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Vera
*/
public class NewJFrame extends javax.swing.JFrame {
int a=0;
client clt;
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
setVisible(true);
clt=new client("127.0.0.1",9513) {
@Override
public void client_out(String string) {
jTextArea1.append("\n"+string);//bei einem eingehenden string wird dieser ausgegeben
}
};
/* jScrollPane1.setCorner(ScrollPaneConstants.LOWER_LEFT_CORNER, jPanel1);*/
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBackground(new java.awt.Color(126, 157, 11));
jScrollPane1.setAutoscrolls(true);
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jButton1.setBackground(new java.awt.Color(126, 157, 11));
jButton1.setText("Enter");
jButton1.setToolTipText("Sende deine Nachricht/deinen Befehl");
jButton1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setBackground(new java.awt.Color(255, 0, 0));
jButton2.setText("Ende");
jButton2.setToolTipText("Beende das Spiel");
jButton2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField1)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton2)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap(13, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String x = jTextField1.getText(); //is sozusagen enter, verbindung wird abgefragt, und dementsprechend wird agiert
if (a == 0) {
clt.client_start(x);
a++;
} else if (a == 1) {
if (x.equalsIgnoreCase("/stop") == true) {
clt.client_stop();
a--;
//system.exit oder so
} else {
try {
clt.anfrage_get(x);
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (a==1) {
clt.client_stop();//programm beenden button
}
System.exit(0);
}
/**
* @param args the command line arguments
*/
/**
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewJFrame().setVisible(true);
}
});
}**/
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
problem ist, das der nicht von selbst nachscrollt, wenn ein signal ausgegeben wird.
frage1. woran liegt das?
frage2. wie kann man es beheben?
danke schonmal im vorraus
edit: bei dem generator vom programm habe ich sowohl bei den scrollpanes, als auch bei der textarea autoscroll auf true gesetzt
Zuletzt bearbeitet: