Introduzione a JButton in Java
La classe JButton in Java viene utilizzata per creare pulsanti che possono essere utilizzati per eseguire qualsiasi ActionEvent ogni volta che si fa clic. Per realizzare l'azione dell'evento, è necessario implementare l'interfaccia ActionListener. Il componente Pulsanti in Swing è simile a quello del componente pulsante AWT tranne per il fatto che può contenere testo, immagine o entrambi. La classe JButton estende la classe JComponent e può essere utilizzata in un contenitore.
Dichiarazione di classe JButton
La dichiarazione della classe javax.swing.JButton è di seguito:
public class JButton extends AbstractButton implements Accessible
Tipi di costruttori utilizzati nella classe JButton
Esistono cinque tipi di costruttori sostanzialmente utilizzati nella classe JButton:
1. JButton ()
Questo costruttore creerà un pulsante nel componente senza icona o testo.
Esempio
import java.awt.*;
import javax.swing.*;
public class JButtonExample (
public static void main(String() args) (
JFrame frame=new JFrame("Button Example");
JButton b=new JButton();
b.setPreferredSize(new Dimension(100, 30));
frame.add(b);
frame.setSize(500, 500);
frame.setLayout(new FlowLayout());
frame.setVisible(true);
)
)
Produzione:
2. JButton (testo stringa)
Questo costruttore creerà un pulsante nel componente con il testo specificato nei parametri.
Esempio
import java.awt.*;
import javax.swing.*;
public class JButtonExample (
public static void main(String() args) (
JFrame frame=new JFrame("Button Example");
JButton b=new JButton("Click Here");
b.setPreferredSize(new Dimension(100, 30));
frame.add(b);
frame.setSize(500, 500);
frame.setLayout(new FlowLayout());
frame.setVisible(true);
)
)
Produzione:
3. JButton (Icon img)
Questo costruttore creerà un pulsante nel componente con l'immagine img fornita nei parametri.
Esempio
import java.awt.*;
import javax.swing.*;
public class JButtonExample (
public static void main(String() args) (
JFrame frame=new JFrame("Button Example");
JButton b=new JButton(new ImageIcon("C:\\custom.png.webp"));
frame.add(b);
frame.setSize(500, 500);
frame.setLayout(new FlowLayout());
frame.setVisible(true);
)
)
Produzione:
4. Pulsante J (azione a)
Questo costruttore creerà un pulsante nel componente con le proprietà fornite da Action e nel parametro.
Esempio
importawt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class JButtonExample extends JFrame(
private JButton reg;
private Action action = new buttonAction();
public JButtonExample() (
super("JButton Demo example");
setLayout(new FlowLayout());
reg = new JButton(action);
reg.setPreferredSize(new Dimension(100, 30));
add(reg);
)
public class buttonAction extends AbstractAction(
public void actionPerformed(ActionEvent e)
(
JOptionPane.showMessageDialog(null, "Button click");
)
)
public static void main(String() args) (
JButtonExample jb = new JButtonExample();
jb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb.setSize(300, 300);
jb.setVisible(true);
)
)
Produzione:
5. JButton (String text, Icon img)
Questo costruttore creerà un pulsante nel componente con il testo e l'immagine specificata nei parametri.
Esempio
import java.awt.*;
import javax.swing.*;
public class JButtonExample (
public static void main(String() args) (
JFrame frame=new JFrame("Button Example");
JButton b=new JButton("Click here", new ImageIcon("C:\\custom.png.webp"));
frame.add(b);
frame.setSize(500, 500);
frame.setLayout(new FlowLayout());
frame.setVisible(true);
)
)
Produzione:
Metodi della classe JButton
Di seguito sono riportati i metodi comunemente utilizzati nella classe JButton:
- Void setText (testo stringa): questo metodo viene sostanzialmente utilizzato per impostare il testo specificato sul pulsante nel componente.
- String getText (): questo metodo viene utilizzato per restituire il testo del pulsante nel componente specificato.
- Void setEnabled (boolean b): questo metodo viene utilizzato per abilitare o disabilitare un pulsante passando il valore appropriato nel parametro.
- Void setIcon (icon i): questo metodo viene utilizzato per impostare l'icona specificata "I" sul pulsante.
- Icona getIcon (): questo metodo viene utilizzato per restituire l'icona del pulsante specificato.
- Void setHorizontalTextPosition (int hpos): questo metodo viene utilizzato per impostare la posizione orizzontale del messaggio del pulsante rispetto alla sua icona.
- Void stVerticalTextPosition (int vpos): questo metodo viene utilizzato per impostare la posizione verticale del messaggio del pulsante rispetto alla sua icona.
Esempio di classe JButton
Di seguito è riportato l'esempio della classe JButton:
Operazione CRUD su JTable
package jbuttonapplication;
import javax.swing.table.DefaultTableModel;
public class NewJFrame extends javax.swing.JFrame (
public NewJFrame() (
initComponents();
)
private void initComponents() (
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
rno = new javax.swing.JTextField();
fname = new javax.swing.JTextField();
lname = new javax.swing.JTextField();
add = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jbtable = new javax.swing.JTable();
jbnew = new javax.swing.JButton();
jbadd = new javax.swing.JButton();
jbupdate = new javax.swing.JButton();
jbdelete = new javax.swing.JButton();
label = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Roll No");
jLabel2.setText("First Name");
jLabel3.setText("Last Name");
jLabel4.setText("Address");
jbtable.setModel(new javax.swing.table.DefaultTableModel(
new Object ()() (
),
new String () (
"Roll No", "First Name", "Last Name", "Address"
)
) (
Class() types = new Class () (
java.lang.Integer.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
);
public Class getColumnClass(int columnIndex) (
return types (columnIndex);
)
));
jbtable.addMouseListener(new java.awt.event.MouseAdapter() (
public void mouseClicked(java.awt.event.MouseEvent evt) (
jbtableMouseClicked(evt);
)
));
jScrollPane1.setViewportView(jbtable);
jbnew.setText("New");
jbnew.addActionListener(new java.awt.event.ActionListener() (
public void actionPerformed(java.awt.event.ActionEvent evt) (
jbnewActionPerformed(evt);
)
));
jbadd.setText("Add");
jbadd.addActionListener(new java.awt.event.ActionListener() (
public void actionPerformed(java.awt.event.ActionEvent evt) (
jbaddActionPerformed(evt);
)
));
jbupdate.setText("Update");
jbupdate.addActionListener(new java.awt.event.ActionListener() (
public void actionPerformed(java.awt.event.ActionEvent evt) (
jbupdateActionPerformed(evt);
)
));
jbdelete.setText("Delete");
jbdelete.addActionListener(new java.awt.event.ActionListener() (
public void actionPerformed(java.awt.event.ActionEvent evt) (
jbdeleteActionPerformed(evt);
)
));
label.setForeground(new java.awt.Color(204, 0, 0));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(136, 136, 136)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(jLabel3)
.addComponent(jbnew))))
.addGap(37, 37, 37)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(rno, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
.addComponent(fname)
.addComponent(lname)
.addComponent(add))
.addGap(32, 32, 32)
.addComponent(label, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jbadd)
.addGap(46, 46, 46)
.addComponent(jbupdate)
.addGap(74, 74, 74)
.addComponent(jbdelete))))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(2, 2, 2)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(177, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(117, 117, 117)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(rno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label))
.addComponent(jLabel1))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(fname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(lname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(add, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(46, 46, 46)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jbnew)
.addComponent(jbadd)
.addComponent(jbupdate)
.addComponent(jbdelete))
.addGap(52, 52, 52)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(328, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
)
private void jbnewActionPerformed(java.awt.event.ActionEvent evt) (
rno.setText("");
fname.setText("");
lname.setText("");
add.setText("");
)
private void jbaddActionPerformed(java.awt.event.ActionEvent evt) (
label.setText("");
DefaultTableModel model = (DefaultTableModel)jbtable.getModel();
if(!rno.getText().isEmpty()&&!fname.getText().isEmpty()
&&!lname.getText().isEmpty()&&!add.getText().isEmpty())
(
model.addRow(new Object()(rno.getText().trim(), fname.getText().trim(),
lname.getText().trim(), add.getText().trim()));
)
else
(
label.setText("All the fields should be filled");
)
)
private void jbtableMouseClicked(java.awt.event.MouseEvent evt) (
DefaultTableModel model = (DefaultTableModel)jbtable.getModel();
rno.setText(model.getValueAt(jbtable.getSelectedRow(), 0).toString());
fname.setText(model.getValueAt(jbtable.getSelectedRow(), 1).toString());
lname.setText(model.getValueAt(jbtable.getSelectedRow(), 2).toString());
add.setText(model.getValueAt(jbtable.getSelectedRow(), 3).toString());
)
private void jbupdateActionPerformed(java.awt.event.ActionEvent evt) (
label.setText("");
DefaultTableModel model = (DefaultTableModel)jbtable.getModel();
if(jbtable.getSelectedRow()==-1)
(
if(jbtable.getRowCount()==0)
(
label.setText("Table is Empty");
)
else
(
label.setText("No Row Selected to Update");
)
)
else
(
model.setValueAt(rno.getText(), jbtable.getSelectedRow(), 0);
model.setValueAt(fname.getText(), jbtable.getSelectedRow(), 1);
model.setValueAt(lname.getText(), jbtable.getSelectedRow(), 2);
model.setValueAt(add.getText(), jbtable.getSelectedRow(), 3);
)
)
private void jbdeleteActionPerformed(java.awt.event.ActionEvent evt) (
label.setText("");
DefaultTableModel model = (DefaultTableModel)jbtable.getModel();
if(jbtable.getSelectedRow()==-1)
(
if(jbtable.getRowCount()==0)
(
label.setText("Table is Empty");
)
else
(
label.setText("No Row Selected to Update");
)
)
else
(
model.removeRow(jbtable.getSelectedRow());
)
)
public static void main(String args()) (
try (
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) (
if ("Nimbus".equals(info.getName())) (
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
)
)
) catch (ClassNotFoundException ex) (
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
) catch (InstantiationException ex) (
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
) catch (IllegalAccessException ex) (
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
) catch (javax.swing.UnsupportedLookAndFeelException ex) (
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
)
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() (
public void run() (
new NewJFrame().setVisible(true);
)
));
)
// Variables declaration - do not modify
private javax.swing.JTextField add;
private javax.swing.JTextField fname;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton jbadd;
private javax.swing.JButton jbdelete;
private javax.swing.JButton jbnew;
private javax.swing.JTable jbtable;
private javax.swing.JButton jbupdate;
private javax.swing.JLabel label;
private javax.swing.JTextField lname;
private javax.swing.JTextField rno;
// End of variables declaration
)
Produzione:
Conclusioni - JButton in Java
La classe JButton può essere utilizzata per creare un componente pulsante per eseguire le modifiche al componente in modo dinamico come nell'esempio sopra.
Articoli consigliati
Questa è una guida a JButton in Java. Qui discutiamo i tipi di costruttori usati nella classe JButton insieme a Metodi ed Esempio. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -
- JTextField in Java
- JDialog in Java
- BorderLayout in Java
- CardLayout in Java
- JPanel in Java (costruttori)
- GroupLayout in Java
- Esempi di JFrame in Java
- JLabel in Java
- Guida completa a Flowlayout in Java
- Metodi e programma JTable in Java