Hey Leute,
ich struggle schon seit Wochen an dieses Problem mein JTextPane wird nicht aktuallisiert und ich denke es liegt an der Struktur der Anwendung, also ich mein die Polyphormie. Mein Prof meinte ich sollte Document verwenden und ich sollte es auch verwenden um den String an gewissen stellen zu stylen. Jedoch ist dies nicht so wichtig, mir geht es in erster Linie um die Aktuallisierung des JTextPane. Ihr seit jetzt meine letzte Hoffnung sonst sind 6 Punkte verstrichen .
In dieser Klasse erstelle ich das JFrame und hier fängt auch das Programm an durch den Aufruf des Konstruktors.
Hier wird das JFrame aufgeteilt in bestimmten bereichen. Ich denke hier liegt das problem weil es einmal eingelesen wird. Ich hab schon ausprobiert die bestimmeJSplitpane() nochmal aufzurufen wenn das RadioButton angeklickt ist damit es wieder aktuallisiert wird aber leider hat es nicht funktioniert.
Hier sollte der TextPane aktuallisiert werden. Der String wert der zurückgegeben wird ist Korrekt und er wird auch erstellt wenn das Signal vom RadioButton kommt jedoch aktuallisiert sich das TextPane nicht. Mein Professor sagte ich sollte Document verwenden und ich muss auch Document verwenden um Style hinzuzufügen. Er meinte das ich durch Document mein TextPane aktualisieren kann jedoch hat mir java doc und stackoverflow nicht weiter geholfen.
Das ist der RadioButton der das Signal gibt den TextPane zu aktuallisieren durch die Methode baueMonatblattZusammen(jahr).
ich struggle schon seit Wochen an dieses Problem mein JTextPane wird nicht aktuallisiert und ich denke es liegt an der Struktur der Anwendung, also ich mein die Polyphormie. Mein Prof meinte ich sollte Document verwenden und ich sollte es auch verwenden um den String an gewissen stellen zu stylen. Jedoch ist dies nicht so wichtig, mir geht es in erster Linie um die Aktuallisierung des JTextPane. Ihr seit jetzt meine letzte Hoffnung sonst sind 6 Punkte verstrichen .
In dieser Klasse erstelle ich das JFrame und hier fängt auch das Programm an durch den Aufruf des Konstruktors.
Java:
private Ausgabe ausgabe;
private KalenderFrameSplit content = new KalenderFrameSplit();
public KalenderFrame() throws HeadlessException {
erzeugeFrame();
}
public void erzeugeFrame() {
setJMenuBar(KalenderMenuBar.getInstance().erstelleMenu(this));
setTitle("Kalender");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(1000, 500));
JSplitPane splitPane = content.bestimmeJSplitpane();
add(splitPane);
pack();
setLocationRelativeTo(null);
validate();
setVisible(true);
}
Hier wird das JFrame aufgeteilt in bestimmten bereichen. Ich denke hier liegt das problem weil es einmal eingelesen wird. Ich hab schon ausprobiert die bestimmeJSplitpane() nochmal aufzurufen wenn das RadioButton angeklickt ist damit es wieder aktuallisiert wird aber leider hat es nicht funktioniert.
Java:
private KalenderFrameLinks links = new KalenderFrameLinks();
private KalenderFrameMitte mitte = new KalenderFrameMitte();
private KalenderFrameRechts rechts = new KalenderFrameRechts();
public JSplitPane bestimmeJSplitpane() {
JPanel leftPanel = this.links.linkerBereich();
JScrollPane centerPanel = this.mitte.mittlererBereich();
JPanel rightPanel = this.rechts.rechterBerech();
JSplitPane splitPane1 = new JSplitPane();
JSplitPane splitPane2 = new JSplitPane();
splitPane1.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPane1.setRightComponent(splitPane2);
splitPane1.setLeftComponent(leftPanel);
splitPane1.setEnabled(true);
splitPane1.setDividerSize(3);
splitPane2.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPane2.setRightComponent(rightPanel);
splitPane2.setLeftComponent(centerPanel);
splitPane2.setDividerLocation(-2000);
splitPane2.setEnabled(true);
splitPane2.setMinimumSize(new Dimension(4000, 0));
splitPane2.setDividerSize(3);
return splitPane1;
}
Hier sollte der TextPane aktuallisiert werden. Der String wert der zurückgegeben wird ist Korrekt und er wird auch erstellt wenn das Signal vom RadioButton kommt jedoch aktuallisiert sich das TextPane nicht. Mein Professor sagte ich sollte Document verwenden und ich muss auch Document verwenden um Style hinzuzufügen. Er meinte das ich durch Document mein TextPane aktualisieren kann jedoch hat mir java doc und stackoverflow nicht weiter geholfen.
Java:
private String monatsblattBauplan;
JTextPane textPane = new JTextPane();
public JScrollPane mittlererBereich() {
JPanel panel = new JPanel(new BorderLayout());
JTextPane textPane = new JTextPane();
textPane.setText( "" );
StyledDocument doc = textPane.getStyledDocument();
// Define a keyword attribute
SimpleAttributeSet keyWord = new SimpleAttributeSet();
StyleConstants.setForeground(keyWord, Color.RED);
StyleConstants.setBackground(keyWord, Color.YELLOW);
StyleConstants.setBold(keyWord, true);
// Add some text
try
{
doc.insertString(0, monatsblattBauplan , null );
doc.insertString(doc.getLength(), "", keyWord );
}
catch(Exception e) { System.out.println(e); }
this.textPane.setLayout(new BorderLayout(200, 200));
this.textPane.setEditable(false);
panel.add(textPane);
panel.setBackground(Color.white);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(panel);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
return scrollPane;
}
Das ist der RadioButton der das Signal gibt den TextPane zu aktuallisieren durch die Methode baueMonatblattZusammen(jahr).
Java:
private KalenderFrameMitte mitteBereich = new KalenderFrameMitte();
private KalenderFrameLinks linkerBereich = new KalenderFrameLinks();
public JPanel rechterBerech() {
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
JLabel aktionLabel = new JLabel("Aktion waehlen:");
JRadioButton kalenderblatt = new JRadioButton(this.ausgabe.radioButtonMenue(1), false);
kalenderblatt.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
int jahr = Kalender.getInstance().getJahr();
Kalender.getInstance().setModus(-1);
System.out.println("Kalenblatt Radiobutton clicked: jahr = "+jahr );
mitteBereich.baueMonatblattZusammen(jahr);
} else {
}
}
});
}