2016-05-11 7 views
0

Ich möchte Folgendes erreichen: Eine größenveränderbare JFrame-Klasse, die eine Reihe von Schaltflächen oben und eine JTextArea auf dem Rest des JFrame hat. Es sollte ähnlich wie Notepad mit Schaltflächen anstelle von Dropdown-Menüs aussehen. Bis jetzt konnte ich dies schreiben, aber die JTextArea Größe ändert sich nicht richtig.Notepad-Klasse in Java

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

public class TestDialog extends JDialog implements ActionListener { 

    public TestDialog(JFrame parent, String title, String message) { 
     super(parent, title, true);  
     JPanel buttonPanel = new JPanel();   
     JButton buttonOK = new JButton("OK"); 
     buttonPanel.add(buttonOK); 
     buttonOK.addActionListener(this); 
     //Listing 2 goes here 
     add(buttonPanel, BorderLayout.NORTH); 
     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     JTextArea myTextArea = new JTextArea(); 
     myTextArea.setText(message); 
     myTextArea.setName(title); 

     myTextArea.setLineWrap(true); 
     myTextArea.setWrapStyleWord(true); 

     JScrollPane myScrollBar = new JScrollPane(myTextArea, 
       JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, 
       JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
     add(myScrollBar, BorderLayout.SOUTH); 
     setPreferredSize(new Dimension(1100, 800)); 
     pack(); 
     setLocationRelativeTo(null); 
     setVisible(true); 
    } 

    public void actionPerformed(ActionEvent e) { 
     setVisible(false);   
     dispose(); 
    } 
} 

Dies sind zwei am nächsten Treffer: (JTextArea on JPanel inside JScrollPane does not resize properly) und (http://www1.cs.columbia.edu/~swapneel/1007/Notepad.java) im ersten Fall jedoch die Größe der JTextArea nur den gesamten Text passen, nicht den gesamten verfügbaren Platz JFrame. Die zweite Version von Editor verfügt nicht über eine Bildlaufleiste. Daher funktioniert es nicht mit großen Dateien.

Auch habe ich viele "Overridable Methodenaufrufe im Konstruktor". Ich weiß, das ist schlecht. Was soll ich deswegen machen?

Antwort