My JText Area is not working. You will see if you run this code. The textArea keeps going to different places even though I have set a definitive spot that it should be. The code for the textArea is line 57.
What I exactly need is for the testArea to maintain a fixed position, which is explained in line 57.
Note: 'pain' is a JPanel containing the textArea
public Graphics g;
public void paint(Graphics g) {
Graphics2D projectFinder = (Graphics2D) g;
projectFinder.setColor(Color.GRAY);
projectFinder.fillRect(0, 0, 1000, 50);
projectFinder.setStroke(new BasicStroke(100));
Graphics2D OutPut = (Graphics2D) g;
OutPut.setColor(Color.LIGHT_GRAY);
OutPut.fillRect(553, 60, 535, 670);
OutPut.drawString("Project Input (Your Code)", 30, 90);
Graphics2D console = (Graphics2D) g;
console.setColor(Color.WHITE);
console.fillRect(563, 620, 515, 100);
console.setColor(Color.BLACK);
console.drawString("Console.ChemLOG", 570, 640);
}
public static void main(String[] args) {
JPanel pnlButton = new JPanel();
pnlButton.setBounds(800, 100, 100, 100);
JButton button = new JButton("Add Project");
button.setBounds(1000, 0, 100, 50);
JFrame frame = new JFrame("GenoTECH IDE 1.0.0");
frame.add(new MainScreen());
frame.setSize(1100, 800);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(button);
button.addActionListener(new NewProject());
// TextBox
JPanel pain = new JPanel();
JTextArea area = new JTextArea();
area.setSize(535, 670);
area.setLocation(0, 0);
pain.setLocation(10, 60);
pain.setSize(area.getSize());
pain.add(area);
frame.add(pain);
}
// add project button
static class NewProject implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton buttonOK = new JButton("Ok");
buttonOK.setBounds(0, 233, 150, 45);
JButton buttonCn = new JButton("Cancel");
buttonCn.setBounds(150, 233, 150, 45);
JFrame frame2 = new JFrame("New Project");
frame2.setSize(300, 300);
frame2.setVisible(true);
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.add(buttonOK);
frame2.add(buttonCn);
buttonCn.addActionListener(new buttonCN());
}
static class buttonCN implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
}
}
Ok now for an update for the code, I have got the JTextArea to work without messing up, however the 2D graphics is not getting called for some reason. I am also working on another layout using some of the Java layout formats.
New Code:
private static final long serialVersionUID = 1L;
public Graphics g;
public void paint(Graphics g) {
Graphics2D projectFinder = (Graphics2D) g;
projectFinder.setColor(Color.GRAY);
projectFinder.fillRect(0, 0, 1000, 50);
projectFinder.setStroke(new BasicStroke(100));
Graphics2D OutPut = (Graphics2D) g;
OutPut.setColor(Color.LIGHT_GRAY);
OutPut.fillRect(553, 60, 535, 670);
OutPut.drawString("Project Input (Your Code)", 30, 90);
Graphics2D console = (Graphics2D) g;
console.setColor(Color.WHITE);
console.fillRect(563, 620, 515, 100);
console.setColor(Color.BLACK);
console.drawString("Console.ChemLOG", 570, 640);
}
public static void main(String[] args) {
JButton button = new JButton("Add Project");
button.setBounds(1000, 0, 100, 50);
//button.setSize(5,5);
//button.setLocation(1,1);
JFrame frame = new JFrame("GenoTECH IDE 1.0.0");
frame.setLayout(null);
frame.add(new MainScreen());
frame.setSize(1100, 800);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(button);
button.addActionListener(new NewProject());
// Thing to Change
JTextArea area = new JTextArea();
area.setSize(535, 670);
area.setLocation(10, 60);
frame.add(area);
}
// add project button
static class NewProject implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton buttonOK = new JButton("Ok");
buttonOK.setBounds(0, 233, 150, 45);
JButton buttonCn = new JButton("Cancel");
buttonCn.setBounds(150, 233, 150, 45);
JFrame frame2 = new JFrame("New Project");
frame2.setSize(300, 300);
frame2.setVisible(true);
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.add(buttonOK);
frame2.add(buttonCn);
}
}
I'm not sure what you're trying to do. Here's a runnable version of your code with Swing layouts.
Here are the changes I made.
I started the application with a call to the SwingUtilities invokeLater method. This ensures that the Swing components are created and modified on the Event Dispatch thread (EDT).
The order that you execute the JFrame methods is very important. I fixed the order.
You draw on a JPanel using the paintComponent method. You must make the call to super before your drawing code.
You set the size of the drawing panel only. You use the JFrame pack method to size the rest of the Swing components.
As others have mentioned, you use Swing layouts to lay out the Swing components.
.
package com.ggl.testing;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class GenoTech implements Runnable {
@Override
public void run() {
JFrame frame = new JFrame("GenoTECH IDE 1.0.0");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
mainPanel.add(new DrawingPanel());
JPanel pnlButton = new JPanel();
JButton button = new JButton("Add Project");
button.addActionListener(new NewProjectActionListener());
pnlButton.add(button);
mainPanel.add(pnlButton);
JPanel pain = new JPanel();
JTextArea area = new JTextArea();
pain.add(area);
mainPanel.add(pain);
frame.add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new GenoTech());
}
public class DrawingPanel extends JPanel {
private static final long serialVersionUID = -5718559965267054844L;
public DrawingPanel() {
this.setPreferredSize(new Dimension(700, 300));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.GRAY);
g2d.fillRect(0, 0, 700, 50);
g2d.setStroke(new BasicStroke(100));
g2d.setColor(Color.LIGHT_GRAY);
g2d.fillRect(553, 60, 535, 300);
g2d.drawString("Project Input (Your Code)", 30, 90);
g2d.setColor(Color.WHITE);
g2d.fillRect(563, 620, 515, 100);
g2d.setColor(Color.BLACK);
g2d.drawString("Console.ChemLOG", 570, 640);
}
}
// add project button
public class NewProjectActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JFrame frame2 = new JFrame("New Project");
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel mainPanel = new JPanel();
JButton buttonOK = new JButton("Ok");
mainPanel.add(buttonOK);
JButton buttonCn = new JButton("Cancel");
buttonCn.addActionListener(new ButtonCNActionListener());
mainPanel.add(buttonCn);
frame2.add(mainPanel);
frame2.pack();
frame2.setLocationByPlatform(true);
frame2.setVisible(true);
}
public class ButtonCNActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
}
}