2016-09-20 5 views
0

Je me bats un peu avec essayer de créer une chose de type bloc-notes en Java. Jusqu'à présent, j'ai une classe comme ci-dessous, c'est vraiment un JComponent (UtilityComponent s'étend JComponent). Dans celui-ci, vous pouvez voir que je suis en train de rendre des graphiques pour faire une forme de bloc-notes, et maintenant je veux un JTextArea dans cette forme pour entrer des choses. Mais je ne peux pas trouver un moyen de le faire fonctionner; J'ai essayé comme il semble maintenant, j'ai essayé de l'ajouter dans la racine JFrame (dans un cas, il a pris l'ensemble JFrame), j'ai essayé d'utiliser JPanel composants et autres, mais ne peux pas l'obtenir tout à fait raison!Comment faire apparaître un JTextArea au-dessus de Graphics, à la fois dans un composant JComponent?

package jUtility; 

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics2D; 

import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 

public class Note extends UtilityComponent { 

    private static final long serialVersionUID = 2890336222216437001L; 
    private static int width, height; 
    private static JScrollPane text; 

    public Note(int x, int y, ID id, int w, int h) { 
     super(x, y, id); 
     width = w; 
     height = h; 
     JTextArea t = new JTextArea(5,5); 
     t.setText("sdfsdaf"); 
     t.setBackground(Color.BLUE); 
     t.setLocation(50, 50); 
     t.setForeground(Color.RED); 
     t.setSize(new Dimension(50,50)); 
     text = new JScrollPane(t); 
     text.setVisible(true); 
    } 

    public void tick() { 

    } 


    public void render(Graphics2D g2) { 
     g2.setColor(Color.GRAY); 
     g2.fillRoundRect(x, y, width, height, 50, 50); 
     g2.setColor(Color.DARK_GRAY); 
     g2.fillRoundRect(x + 2, y + 2, width - 4, height - 4, 50, 50); 
     g2.setColor(Color.GRAY); 
     g2.fillRoundRect(x + 23, y + 23, width - 46, height - 46, 50, 50); 
     g2.setColor(Color.WHITE); 
     g2.fillRoundRect(x + 25, y + 25, width - 50, height - 50, 50, 50); 
    } 

} 
+1

Pour une meilleure aide plus rapidement, postez un [MCVE] ou [Short, Self Contained, Example correct] (http://www.sscce.org/). –

+0

Comment voulez-vous que votre version du bloc-notes ressemble? – user3437460

+0

Un contour gris avec des coins courbes, imaginez peut-être le contour d'un ipad vertical, et le milieu de celui-ci est juste une zone blanche où l'utilisateur peut taper des choses à l'intérieur. Je peux faire le contour avec Graphics pas de soucis, c'est juste faire coopérer le JTextArea (bien qu'il ne doive pas être un JTextArea s'il y a un meilleur moyen). – Jottle4

Répondre

1

Je l'ai compris après beaucoup de chagrin. Je l'ai modifié pour que ma fenêtre (Jframe thing) comprenne d'abord un JLayeredPane en arrière-plan, puis j'ajoute d'abord mes graphiques au JLayeredPane.DAFAULT_LAYER, puis mon JTextArea à quelque chose de plus haut. Le petit problème avec lequel j'ai eu des ennuis pendant des heures était que je devais définir l'emplacement et la taille de tous les composants ajoutés au JLayeredPane!

+0

Il existe d'autres façons de le faire, mais heureux que vous l'ayez trié. –