Im bulding a GUI using eclipse plugin WindowsBuilder, im trying to pass a variable "comboBox kombo" from the initialize() method. I cant call the method to run my passed variable. The method supposed to get the data from my database to the comboBox.
Below i have attached my coding, any help will be appreciated ,Thank you!
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;
import java.awt.Label;
import java.awt.Font;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JTextField;
public class book extends JFrame {
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;
private JFrame mdetail;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
book window = new book();
window.mdetail.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public book() {
initialize();
comboBox(kombo);
}
private void comboBox(JComboBox kombo) {
try
{
con= DriverManager.getConnection("jdbc:mysql://localhost/oop_project", "root","");
String sql = "select movieName from movie ";
pst = con.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next())
{
String name = rs.getString("movieName");
kombo.addItem(name);
}
}catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
mdetail = new JFrame();
mdetail.setTitle("Book Ticket");
mdetail.setBounds(100, 100, 450, 336);
mdetail.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mdetail.getContentPane().setLayout(null);
Label label = new Label("Movie Details");
label.setForeground(Color.BLACK);
label.setFont(new Font("Dialog", Font.PLAIN, 21));
label.setBounds(135, 10, 184, 54);
mdetail.getContentPane().add(label);
JComboBox kombo = new JComboBox();
kombo.setBounds(155, 70, 226, 22);
mdetail.getContentPane().add(kombo);
Label label_1 = new Label("Select Movie");
label_1.setBounds(74, 70, 75, 22);
mdetail.getContentPane().add(label_1);
Label label_1_1 = new Label("Select Date");
label_1_1.setBounds(74, 103, 75, 22);
mdetail.getContentPane().add(label_1_1);
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"11-12-2022", "12-12-2022", "13-12-2022"}));
comboBox_1.setBounds(155, 103, 226, 22);
mdetail.getContentPane().add(comboBox_1);
Label label_1_1_1 = new Label("Select Time");
label_1_1_1.setBounds(74, 136, 75, 22);
mdetail.getContentPane().add(label_1_1_1);
JComboBox comboBox_1_1 = new JComboBox();
comboBox_1_1.setModel(new DefaultComboBoxModel(new String[] {"7.00am", "10.00am", "1.00pm", "5.00pm", "8.00pm"}));
comboBox_1_1.setBounds(155, 136, 226, 22);
mdetail.getContentPane().add(comboBox_1_1);
Label label_1_1_2 = new Label("Select Seat");
label_1_1_2.setBounds(74, 169, 75, 22);
mdetail.getContentPane().add(label_1_1_2);
JComboBox comboBox_1_2 = new JComboBox();
comboBox_1_2.setModel(new DefaultComboBoxModel(new String[] {"A(01)", "B(02)", "B(03)"}));
comboBox_1_2.setBounds(155, 169, 226, 22);
mdetail.getContentPane().add(comboBox_1_2);
JButton btnNewButton = new JButton("SUBMIT");
btnNewButton.setBounds(155, 241, 89, 23);
mdetail.getContentPane().add(btnNewButton);
JLabel lblNewLabel = new JLabel("View Seat Position");
lblNewLabel.addMouseListener(new MouseAdapter() {
#Override
public void mouseClicked(MouseEvent e) {
seatposition.main(null);
mdetail.setVisible(false);
}
});
lblNewLabel.setBounds(282, 245, 112, 14);
mdetail.getContentPane().add(lblNewLabel);
Label label_1_2 = new Label("Welcome \"user\"");
label_1_2.setBounds(10, 10, 89, 22);
mdetail.getContentPane().add(label_1_2);
Label label_1_1_2_1_1 = new Label("Number of ticket");
label_1_1_2_1_1.setBounds(53, 202, 101, 22);
mdetail.getContentPane().add(label_1_1_2_1_1);
JComboBox comboBox_1_2_1 = new JComboBox();
comboBox_1_2_1.setBounds(155, 202, 226, 22);
mdetail.getContentPane().add(comboBox_1_2_1);
JMenuBar menuBar = new JMenuBar();
mdetail.setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("Option");
menuBar.add(mnNewMenu);
JMenuItem mntmNewMenuItem = new JMenuItem("Logout");
mnNewMenu.add(mntmNewMenuItem);
JMenuItem exitmenu = new JMenuItem("Exit");
exitmenu.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int exit = JOptionPane.showConfirmDialog(null, "Are you sure you want to exit", "Exit", JOptionPane.YES_NO_OPTION);
if(exit==JOptionPane.YES_OPTION) {
System.exit(0);
}else {
mdetail.setVisible(true);
}
}
});
mnNewMenu.add(exitmenu);
}
}
Related
So I am trying to build a CRUD app, I am able to perform all the operations in a console app and now I want to use the same methods in my GUI application. I have setup all the necessary fields and a table, the add button works and I can implement the others too! my question is how to work with the JTable?
Here is the code for my window builder. You can see that I have set columns for the tables too.
this is what the GUI looks like
package clientGUI;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import bus.Student;
import data.ConnectionDB;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import java.awt.Font;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class DbTester1 {
private JFrame frame;
private JTextField textID;
private JTextField textFN;
private JTextField txtLN;
private JTable table;
private JTable table_1;
ArrayList<Student> studentList= null;
String query = "" ;
Statement stmt = null;
ResultSet rs = null;
Student aStudent = null;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
DbTester1 window = new DbTester1();
window.frame.setVisible(true);
}
});
}
public DbTester1() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 732, 695);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel lblID = new JLabel("ID");
lblID.setBounds(10, 11, 46, 14);
frame.getContentPane().add(lblID);
JLabel lblFN = new JLabel("FN");
lblFN.setBounds(11, 42, 57, 14);
frame.getContentPane().add(lblFN);
JLabel lblLN = new JLabel("LN");
lblLN.setBounds(10, 79, 46, 14);
frame.getContentPane().add(lblLN);
textID = new JTextField();
textID.setBounds(78, 8, 86, 20);
frame.getContentPane().add(textID);
textID.setColumns(10);
textFN = new JTextField();
textFN.setBounds(78, 39, 86, 20);
frame.getContentPane().add(textFN);
textFN.setColumns(10);
txtLN = new JTextField();
txtLN.setBounds(78, 76, 86, 20);
frame.getContentPane().add(txtLN);
txtLN.setColumns(10);
ArrayList<Student> studList = new ArrayList<Student>();
JButton btnAdd = new JButton("Add");
btnAdd.setFont(new Font("Tahoma", Font.PLAIN, 8));
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Student aStudent = new Student(Integer.parseInt(textID.getText()) ,
textFN.getText(), txtLN.getText());
studList.add(aStudent);
}
});
btnAdd.setBounds(0, 103, 89, 23);
frame.getContentPane().add(btnAdd);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(174, 11, 250, 292);
frame.getContentPane().add(scrollPane);
table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
"ID", "FN", "LN"
}
));
scrollPane.setViewportView(table);
table_1 = new JTable();
scrollPane.setColumnHeaderView(table_1);
JButton btnConnect = new JButton("Connect");
btnConnect.setFont(new Font("Tahoma", Font.PLAIN, 8));
btnConnect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Connection con = null;
try {
con = ConnectionDB.getConnection();
JOptionPane.showMessageDialog(null, "Connection
Established!");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
JOptionPane.showMessageDialog(null, "Connection failed!");
}
}
});
btnConnect.setBounds(0, 128, 89, 23);
frame.getContentPane().add(btnConnect);
JButton btnSearch = new JButton("Search");
btnSearch.setFont(new Font("Tahoma", Font.PLAIN, 8));
btnSearch.setBounds(0, 153, 89, 23);
frame.getContentPane().add(btnSearch);
JButton btnUpdate = new JButton("Update");
btnUpdate.setFont(new Font("Tahoma", Font.PLAIN, 8));
btnUpdate.setBounds(0, 178, 89, 23);
frame.getContentPane().add(btnUpdate);
JButton btnRefresh = new JButton("Refresh");
btnRefresh.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Connection con = null;
try {
con = ConnectionDB.getConnection();
String id, fn, ln;
query = "select * from student";
stmt = con.createStatement();
rs = stmt.executeQuery(query);
studentList = new ArrayList<Student> ();
while(rs.next())
{
id = rs.getString(1);
fn = rs.getString(2);
ln = rs.getString(3);
aStudent = new Student(Integer.parseInt(id) , fn, ln);
studentList.add(aStudent);
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
JOptionPane.showMessageDialog(null, "Connection read
data!!!!!");
}
}
});
btnRefresh.setFont(new Font("Tahoma", Font.PLAIN, 8));
btnRefresh.setBounds(0, 205, 89, 23);
frame.getContentPane().add(btnRefresh);
}
}
Please be gentle, this is my first time working with Swing and GUI's.
My problem/question:
I have written some code using Java Swing GUI. The validation portion of my code will only recognize if the textField is incorrectly filled out and ignores if the comboBoxes are left empty. Can anyone tell me what I am doing wrong here? My goal is to make sure that all fields are filled out when the user hits submit. Here is my code:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.layout.FormSpecs;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class FeliciasStore_GUI extends JFrame {
private JPanel contentPane;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FeliciasStore_GUI frame = new FeliciasStore_GUI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public FeliciasStore_GUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 558, 364);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblNewLabel = new JLabel("Size:");
lblNewLabel.setBounds(67, 39, 23, 14);
contentPane.add(lblNewLabel);
JComboBox<String> comboBox = new JComboBox<String>();
comboBox.setBounds(96, 36, 161, 20);
contentPane.add(comboBox);
comboBox.addItem("Small");
comboBox.addItem("Medium");
comboBox.addItem("Large");
comboBox.addItem("XLarge");
comboBox.setSelectedItem(null);
JLabel lblColor = new JLabel("Color:");
lblColor.setBounds(61, 90, 29, 14);
contentPane.add(lblColor);
JComboBox<String> comboBox_1 = new JComboBox<String>();
comboBox_1.setBounds(96, 87, 161, 20);
contentPane.add(comboBox_1);
comboBox_1.addItem("Blue");
comboBox_1.addItem("Red");
comboBox_1.addItem("Silver");
comboBox_1.addItem("Gold");
comboBox_1.addItem("Aqua");
comboBox_1.addItem("Green");
comboBox_1.addItem("Pink");
comboBox_1.addItem("Purple");
comboBox_1.addItem("White");
comboBox_1.addItem("Black");
comboBox_1.addItem("Orange");
comboBox_1.addItem("Maroon");
comboBox_1.setSelectedItem(null);
JLabel label = new JLabel("");
label.setBounds(518, 122, 19, 0);
contentPane.add(label);
JLabel lblStyle = new JLabel("Style:");
lblStyle.setBounds(62, 141, 28, 14);
contentPane.add(lblStyle);
JComboBox<String> comboBox_2 = new JComboBox<String>();
comboBox_2.setBounds(96, 138, 161, 20);
contentPane.add(comboBox_2);
comboBox_2.addItem("Queen");
comboBox_2.addItem("King");
comboBox_2.addItem("Pawn");
comboBox_2.addItem("Knight");
comboBox_2.addItem("Joker");
comboBox_2.addItem("Babydoll");
comboBox_2.addItem("Superstar");
comboBox_2.setSelectedItem(null);
JLabel lblInscription = new JLabel("Inscription:");
lblInscription.setBounds(36, 192, 54, 14);
contentPane.add(lblInscription);
textField = new JTextField();
textField.setBounds(96, 189, 161, 20);
contentPane.add(textField);
textField.setColumns(10);
JButton btnSubmit_1 = new JButton("SUBMIT");
btnSubmit_1.setBounds(96, 240, 161, 23);
btnSubmit_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(textField.getText().length()>15 || comboBox == null || comboBox_1 == null || comboBox_2 == null) {
JOptionPane.showMessageDialog(null, "Insufficient input.", "Input Error", JOptionPane.ERROR_MESSAGE);
return;
}
String enscription = textField.getText();
}
});
contentPane.add(btnSubmit_1);
}
}
I'm trying to open this gui from an action listener in another class but for whatever reason it's not doing it, any and all help appreciated.
package gui;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.table.DefaultTableModel;
import database.DBConnection;
import javax.swing.JButton;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JTextArea;
import javax.swing.JTable;
public class OrderExample {
static JFrame frame;
public static void main(String[] args){
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
// If Nimbus is not available, you can set the GUI to another look and feel.
}
JFrame frame = new JFrame();
JTable table= new JTable();
table.setBounds(428, 445, 396, -328);
Object[] columns = {"Product Id", "Product Name", "Description", "Price"};
DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(columns);
table.setModel(model);
table.setBackground(Color.white);
table.setForeground(Color.black);
Font font = new Font("", 1, 22);
table.setRowHeight(30);
JTextField prodId = new JTextField();
JTextField prodName = new JTextField();
JTextField prodPrice = new JTextField();
JButton btnAdd = new JButton("Add");
JButton btnDelete = new JButton("Delete");
JButton btnExit = new JButton("Exit");
prodId.setBounds(20, 56, 230, 38);
prodName.setBounds(20, 129, 230, 38);
prodPrice.setBounds(21, 201, 229, 39);
btnAdd.setBounds(20, 451, 100, 38);
btnDelete.setBounds(150, 451, 100, 38);
btnExit.setBounds(20, 511, 100, 39);
JScrollPane pane = new JScrollPane(table);
pane.setBounds(281, 32, 440, 518);
frame.getContentPane().setLayout(null);
frame.getContentPane().add(pane);
frame.getContentPane().add(prodId);
frame.getContentPane().add(prodName);
frame.getContentPane().add(prodPrice);
frame.getContentPane().add(btnAdd);
frame.getContentPane().add(btnDelete);
frame.getContentPane().add(btnExit);
JLabel lblAddId = new JLabel("Product ID");
lblAddId.setBounds(20, 32, 79, 14);
frame.getContentPane().add(lblAddId);
JLabel lblProduct = new JLabel("Product Name");
lblProduct.setBounds(20, 105, 100, 14);
frame.getContentPane().add(lblProduct);
JLabel lblProductPrice = new JLabel("Product Price");
lblProductPrice.setBounds(20, 178, 90, 14);
frame.getContentPane().add(lblProductPrice);
JButton btnListProducts = new JButton("List Products");
btnListProducts.setBounds(150, 511, 100, 39);
frame.getContentPane().add(btnListProducts);
JTextArea description = new JTextArea();
description.setBounds(20, 276, 230, 164);
frame.getContentPane().add(description);
JLabel lblDescription = new JLabel("Description");
lblDescription.setBounds(20, 251, 116, 14);
frame.getContentPane().add(lblDescription);
Object[] row = new Object[4];
btnAdd.addActionListener(new ActionListener(){
#Override
public void actionPerformed(ActionEvent e) {
row[0] = prodId.getText();
row[1] = prodName.getText();
row[2] = description.getText();
row[3] = prodPrice.getText();
model.addRow(row);
try{
Connection connection = DBConnection.getConnection();
PreparedStatement ps = connection.prepareStatement("insert into stock(sname, description, quantity , price) values(?,?,20,?);");
ps.setString(1, prodName.getText());
ps.setString(2, description.getText());
ps.setDouble(3, Double.parseDouble( prodPrice.getText()));
ps.executeUpdate();
}
catch(SQLException sqle){
sqle.printStackTrace();
}
}
});
btnDelete.addActionListener(new ActionListener(){
#Override
public void actionPerformed(ActionEvent e) {
int i = table.getSelectedRow();
if(i >= 0){
model.removeRow(i);
}
else{
System.out.print("Delete ");
}
}
});
table.addMouseListener(new MouseAdapter(){
#Override
public void mouseClicked(MouseEvent e) {
int i = table.getSelectedRow();
prodId.setText(model.getValueAt(i, 0). toString());
prodName.setText(model.getValueAt(i, 1).toString());
prodPrice.setText(model.getValueAt(i, 3).toString());
description.setText(model.getValueAt(i, 2).toString());
}
});
btnListProducts.addActionListener(new ActionListener(){
#Override
public void actionPerformed(ActionEvent e){
int i = table.getSelectedRow();
try{
Connection connection = DBConnection.getConnection();
Statement statement = connection.createStatement();
ResultSet rs;
if(prodId.getText().equalsIgnoreCase(""))
rs = statement.executeQuery("select * from stock;");
else
rs = statement.executeQuery("select * from stock where stockID = " + prodId.getText() + ";");
while(rs.next()){
row[0] = rs.getInt("stockID");
row[1] = rs.getString("sname");
row[2] = rs.getString("description");
row[3] = rs.getDouble("price");
model.addRow(row);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});
btnExit.addActionListener(new ActionListener(){
#Override
public void actionPerformed(ActionEvent e){
frame.dispose();
}
});
frame.setSize(771, 600);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
This is the actionlistener code
btnStock.addActionListener(new ActionListener() {
#Override
public void actionPerformed(ActionEvent e) {
OrderExample window = new OrderExample();
}
});
I've tried to set window to visible but it just gives me an error.
The class OrderExamplehas all of its functionality in its (static) main method which is never been called by your Actionlistener implementation.
You could simply add the call to OrderExample.main to your Actionlistener implementation, but you should better first move the content of main to a non static method (e.g.: init) and call that.
I've got a problem with this, I've got text from comboBox saved into text variable but now I can't make it to be saved to the file like 'num1' and 'num2' after I click a buttom. I know I am missing something simple - or everything is wrong anyways please help! Thank!
package windowbuilded.views;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.awt.event.ActionEvent;
import javax.swing.JList;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
public class WiewWindow {
private JFrame frame;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WiewWindow window = new WiewWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public WiewWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int num1, num2, ans2, combo;
num1=Integer.parseInt(textField.getText());
num2=Integer.parseInt(textField_1.getText());
ans2 = num1 + num2;
textField_2.setText(Integer.toString(ans2));
try{
File dir = new File("C:\\test");
File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
FileWriter writer = new FileWriter(child, true);
PrintWriter out = new PrintWriter(writer);
out.println(num1);
out.println(num2);
out.close();
}
}
} catch (IOException e) {
// do something
}
}
});
btnNewButton.setBounds(124, 206, 89, 23);
frame.getContentPane().add(btnNewButton);
textField = new JTextField();
textField.setBounds(10, 34, 86, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.setBounds(124, 34, 86, 20);
frame.getContentPane().add(textField_1);
textField_1.setColumns(10);
textField_2 = new JTextField();
textField_2.setBounds(124, 101, 86, 20);
frame.getContentPane().add(textField_2);
textField_2.setColumns(10);
JComboBox<String> comboBox = new JComboBox<String>();
comboBox.setModel(new DefaultComboBoxModel(new String[] {"Yes", "No", "Blah!"}));
String text = (String)comboBox.getSelectedItem();
System.out.println(text);
comboBox.setBounds(265, 101, 121, 20);
frame.getContentPane().add(comboBox);
}
}
I am trying to build a quiz app and I managed to build the database. I created a GUI using the card layout to switch between panels and I tried to retrieve the questions and options from from the database to a JtextArea with no success. My question is how do I get the visual components (jtext area,jbutton to display the content from the database) I want them to automatically set the text according with the question number.
this is my code
package quizzGUI;
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.CardLayout;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import java.awt.Font;
import java.awt.List;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import java.awt.Color;
import javax.swing.JRadioButton;
import javax.swing.JTextPane;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import javax.management.Query;
import javax.swing.ButtonGroup;
public class quizzMain {
private JFrame frame;
private JPanel Menu;
private JPanel Playing;
private JPanel Score;
private final ButtonGroup buttonGroup = new ButtonGroup();
public JTextPane textPane;
public JButton btnA;
public JRadioButton rdbtnB;
public JRadioButton rdbtnC;
public JRadioButton rdbtnD;
public JTextArea textArea;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
quizzMain window = new quizzMain();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
Connection connection = null;
public quizzMain() {
initialize();
connection = sqlConnection.dbConnector();
}
private void initialize() {
Connection connection = sqlConnection.dbConnector();
Statement stmt=null;
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new CardLayout(0, 0));
final JPanel Menu = new JPanel();
frame.getContentPane().add(Menu, "name_668313932787145");
Menu.setLayout(null);
Menu.setVisible(true);
final JPanel Playing = new JPanel();
Playing.setBackground(Color.CYAN);
frame.getContentPane().add(Playing, "name_668321772390383");
Playing.setLayout(null);
Playing.setVisible(false);
final JPanel Score = new JPanel();
frame.getContentPane().add(Score, "name_668324579994343");
Score.setLayout(null);
Score.setVisible(false);
JLabel lblNewLabel = new JLabel("C QUIZZ");
lblNewLabel.setFont(new Font("Times New Roman", Font.BOLD | Font.ITALIC, 14));
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(123, 47, 169, 40);
Menu.add(lblNewLabel);
JButton btnStart = new JButton("Start");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Integer i=0;
Playing.setVisible(true);
Menu.setVisible(false);
try{
String query = ("SELECT * FROM Question ");
PreparedStatement pst=connection.prepareStatement(query);
ResultSet rs=pst.executeQuery();
do {
btnA.setText(rs.getString("ANSWERA"));
}while(rs.next());
}catch(Exception e ){
JOptionPane.showMessageDialog(null, e);
e.printStackTrace();
}
}
});
btnStart.setFont(new Font("Tahoma", Font.BOLD, 12));
btnStart.setBounds(167, 176, 89, 23);
Menu.add(btnStart);
JButton btnFinish = new JButton("Finish");
btnFinish.setBounds(335, 227, 89, 23);
Playing.add(btnFinish);
btnFinish.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Score.setVisible(true);
Playing.setVisible(false);
}
});
JButton btnNextQuestion = new JButton("Next");
btnNextQuestion.setBounds(10, 227, 89, 23);
Playing.add(btnNextQuestion);
JTextArea textArea = new JTextArea();
textArea.setBounds(20, 11, 387, 41);
Playing.add(textArea);
JButton btnA = new JButton("New button");
btnA.setBounds(20, 84, 381, 41);
Playing.add(btnA);
JTextArea txtrScore = new JTextArea();
txtrScore.setBounds(87, 74, 244, 43);
txtrScore.setText("Score:");
Score.add(txtrScore);
}
}
Since you didn't mention your code, its difficult to give you a short precise example. I would recommend you to go through this tutorial which retrieves information (name and number) and display it in JTextArea.
Extracting the key points from the tutorial below:
Database connection establishment and fetching information
String url = "jdbc:mysql://localhost:3306/";
String db = "databasename";
String driver = "com.mysql.jdbc.Driver";
String user = "xxxx";
String pass = "xxxx";
Connection con = null;
PreparedStatement pstatement = null;
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url + db , user, pass);
pstatement = con.prepareStatement("SELECT name, phonenumber FROM tablename");
con = DriverManager.getConnection(url + db, user, pass);
ResultSet rs = pstatement.executeQuery();
while(rs.next()){
String name = rs.getString(1);
int phonenumber = rs.getInt(2);
}
Set text in JTextArea
Then use setText method of JTextArea to set the text. For example, recordTextArea.setText(name + " " + phonenumber);.