Hallo,
schon wieder ein Problem, das denke ich ein kleines Problem ist.
Ich möchte während meiner Laufzeit den Text in eienr JTextArea ud einem JTextField ändern.
Beispiel:
Ich habe eine Artikelliste in einer JTable dargestellt. Hier wird ein Artikel ausgewählt und angeklickt. Nun möchte ich die Detail Informationen anzeigen. Die Bezeichnung in einer TextArea und die ArtikelNummer in einerm JTextField. Ich woltle es so lösen, dass das ArtikelDetailJPanel als Obersever auf die Änderungen des Userklicks reagiert. Ich habe eine ArtikelManagement-Klasse, die den angeklickten Artikel in einer Artikel Variable speichert und den Observer Informiert. Vorher wird der Artikel von der JTable in die ArtikelManagement Klasse geschrieben.
Ich habe auch die einzelnen Informationen zu dem Artikel mal ausgegeben im ArtikelDetailPanel, dort wird alles fein auf der Konsole ausgegeben aber nicht angezeigt. Jetzt verstehe ich nicht warum und hänge dort seit 2 tagen. Habe viel gegoogelt, da ich das problem gerne alleine lösen wollte, aber vergebens. Habs repaint, update ausprobiert.
Ich hoffe ihr könnt mir helfen und eventuell noch eine kleine Meinung zu der Lösung mit der Artikel Management Klasse schreiben, ist es eine saubere Lösung?
Code poste ich nun:
ArtikelPanel
ArtikelManagementKlasse
ArtikelTabelle
schon wieder ein Problem, das denke ich ein kleines Problem ist.
Ich möchte während meiner Laufzeit den Text in eienr JTextArea ud einem JTextField ändern.
Beispiel:
Ich habe eine Artikelliste in einer JTable dargestellt. Hier wird ein Artikel ausgewählt und angeklickt. Nun möchte ich die Detail Informationen anzeigen. Die Bezeichnung in einer TextArea und die ArtikelNummer in einerm JTextField. Ich woltle es so lösen, dass das ArtikelDetailJPanel als Obersever auf die Änderungen des Userklicks reagiert. Ich habe eine ArtikelManagement-Klasse, die den angeklickten Artikel in einer Artikel Variable speichert und den Observer Informiert. Vorher wird der Artikel von der JTable in die ArtikelManagement Klasse geschrieben.
Ich habe auch die einzelnen Informationen zu dem Artikel mal ausgegeben im ArtikelDetailPanel, dort wird alles fein auf der Konsole ausgegeben aber nicht angezeigt. Jetzt verstehe ich nicht warum und hänge dort seit 2 tagen. Habe viel gegoogelt, da ich das problem gerne alleine lösen wollte, aber vergebens. Habs repaint, update ausprobiert.
Ich hoffe ihr könnt mir helfen und eventuell noch eine kleine Meinung zu der Lösung mit der Artikel Management Klasse schreiben, ist es eine saubere Lösung?
Code poste ich nun:
ArtikelPanel
Java:
package de.viv.view;
import java.awt.Color;
public class ArticleAttribute extends JPanel implements Observer {
private JTextField tfArtNr;
private JTextField tfSku;
private Article article;
private String[] articleSplit;
private boolean edit = false;
private ArticleDescriptionArea descriptionArea;
private int iMaxNumberOfChars = 30;
private final static String newline = "\n";
public ArticleAttribute(){
super();
init();
}
public ArticleAttribute(boolean edit){
this.edit = edit;
init();
}
private void init() {
this.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(Color.WHITE, Color.GRAY),
"Hauptattribute", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Arial", Font.PLAIN, 10)));
initLayout();
}
/**
* GridBagLayout Konfiguration
*/
private void initLayout() {
this.setLayout(new GridBagLayout());
GridBagConstraints gbc;
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.insets = new Insets(10, 0, 0, 0);
JLabel lblDesc = new JLabel("Bezeichnung");
lblDesc.setFont(new Font("Arial", Font.BOLD, 14));
this.add(lblDesc, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 2;
gbc.gridheight = 10;
gbc.gridwidth = 4;
gbc.weightx = 5;
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.LINE_START;
descriptionArea = new ArticleDescriptionArea();
descriptionArea.setMaxCharactersPerRow(30);
descriptionArea.setEditable(true);
this.add(descriptionArea, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 13;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.insets = new Insets(10, 0, 0, 0);
JLabel lblArtNr = new JLabel("Artikelnummer");
lblArtNr.setFont(new Font("Arial", Font.BOLD, 14));
this.add(lblArtNr, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 14;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
tfArtNr = new JTextField();
tfArtNr.setEditable(edit);
this.add(tfArtNr, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 15;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.insets = new Insets(10, 0, 0, 0);
JLabel lblMainCat = new JLabel("Hauptkategorie");
lblMainCat.setFont(new Font("Arial", Font.BOLD, 14));
this.add(lblMainCat, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 16;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
JLabel lblMainCatDisp = new JLabel("Innenraum");
this.add(lblMainCatDisp, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 17;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
gbc.insets = new Insets(10, 0, 0, 0);
JLabel lblSubCat = new JLabel("Unterkategorie");
lblSubCat.setFont(new Font("Arial", Font.BOLD, 14));
this.add(lblSubCat, gbc);
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 18;
gbc.gridheight = 1;
gbc.gridwidth = 1;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.LINE_START;
JLabel lblSubCatDisp = new JLabel("Innenraum");
this.add(lblSubCatDisp, gbc);
}
public void splitArtDescription(Article article){
String strDescription = article.getDescription();
int iNumberofMaxFlows = 0;
if(strDescription.length()%iMaxNumberOfChars > 0)
iNumberofMaxFlows = (strDescription.length()/iMaxNumberOfChars)+1;
else
iNumberofMaxFlows = (strDescription.length()/iMaxNumberOfChars);
articleSplit = new String[iNumberofMaxFlows];
int startIndex = 0;
int endIndex = iMaxNumberOfChars;
System.out.println(strDescription.length()%iMaxNumberOfChars);
for(int i = 0; i < iNumberofMaxFlows; i++){
// letzter Split
if(iNumberofMaxFlows - 1 == i){
articleSplit[i] = strDescription.substring(startIndex);
break;
}
articleSplit[i] = strDescription.substring(startIndex, endIndex);
startIndex = startIndex + iMaxNumberOfChars;
endIndex = endIndex + iMaxNumberOfChars;
}
}
@Override
public void update(Observable o, Object arg) {
this.article = (Article) arg;
splitArtDescription(article);
System.out.println(articleSplit.length);
for(String line : articleSplit){
System.out.println(line);
this.descriptionArea.append(line.trim() + newline);
}
this.tfArtNr.setText(article.getArtnr());
System.out.println(article.getArtnr());
}
}
ArtikelManagementKlasse
Java:
private Article selectedArticleInView = null;
public void setSelectedArticleInView(Article viewArticle) {
setChanged();
this.selectedArticleInView = viewArticle;
notifyObservers(this.selectedArticleInView);
}
public Article getSelectedArticleInView() {
return selectedArticleInView;
}
ArtikelTabelle
Java:
listSelectionModel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int iSelectedRow = tblArticle.getSelectedRow();
if(iSelectedRow == -1){
System.out.println("Nix ausgewählt ;-)");
} else {
int iModelIndex = tblArticle.convertRowIndexToModel(iSelectedRow);
ArticleManagement.getInstance().setSelectedArticleInView(tblModel.getValueAt(iModelIndex));
}
}
});
Zuletzt bearbeitet von einem Moderator: