I'm learning Java and testing a simple note taking program. I have a panel that is hidden at startup, and made visible by the click of a button. But I can't see this panel until I resize the window of the program ! I sincerely tried everything I could find online here and there, and still didn't manage to get it running properly. Here is the code :
//Main JFrame "Fenetre"
//imports
...
public class Fenetre extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel west = new JPanel();
private CEPan CEPan = new CEPan();
private JPanel container = new JPanel();
private JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, west, CEPan);
private JButton nouvelleNote = new JButton("Nouvelle note");
public Fenetre() {
this.setMinimumSize(new Dimension(800, 700));
this.setTitle("Notes");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(container);
container.setBackground(Color.GREEN);
west.setMinimumSize(new Dimension(100, 700));
west.add(nouvelleNote);
nouvelleNote.addActionListener(this);
CEPan.setMinimumSize(new Dimension(200, 700));
CEPan.setBackground(Color.RED);
split.setDividerSize(4);
container.setLayout(new BorderLayout());
container.add(split, BorderLayout.CENTER);
//At first this panel is hidden until the click of the button
CEPan.setVisible(false);
this.setContentPane(container);
}
public void nouvelleNote() {
CEPan.setVisible(true);
container.repaint();
west.repaint();
this.repaint();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
nouvelleNote();
}
}
CEPan
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class CEPan extends JPanel {
private static final long serialVersionUID = 1L;
private TextArea titleTF = new TextArea(35);
private TextArea contentTA = new TextArea(16);
private JScrollPane scroll = new JScrollPane(contentTA, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
private JScrollPane scrollTitle = new JScrollPane(titleTF);
public boolean hide;
public CEPan() {
titleTF.setBackground(Color.BLUE);
this.setLayout(new BorderLayout());
this.add(scrollTitle, BorderLayout.NORTH);
this.add(scroll, BorderLayout.CENTER);
titleTF.setEditable(true);
contentTA.setLineWrap(true);
scrollTitle.setBackground(Color.GRAY);
}
}
TextArea
public class TextArea extends JTextArea {
private static final long serialVersionUID = 1L;
private Color couleur = new Color(1, 168, 135);
public TextArea(int fs) {
Font font = new Font("Arial", Font.BOLD, fs);
this.setFont(font);
this.setForeground(couleur);
//this.setPreferredSize(new Dimension(40, 40));
}
}
Notes
public class Notes {
public static void main(String[] args) {
// TODO Auto-generated method stub
Fenetre fenetre = new Fenetre();
fenetre.pack();
fenetre.setVisible(true);
}
}