我学习 Java 的时间很短,由于某种原因,这个小事情让我陷入了当前的项目。我有带有更改/删除按钮的 jframe
,但我需要弄清楚如何使它们工作。我需要它在编码中实际更改它,并在实际代码中删除它或永久更改它。
package admin;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
import java.awt.event.*;
public class Project3 extends JFrame {
private JPanel contentPane;
private JTable table_1;
private JScrollPane scrollPane;
String[] columnNames = {"Restaurant", "Dish", "Type", "Price", "Rating"};
Object[][] data = {
{"Nemo", "Vesuvio", "Pizza", new String("65kr"), new Integer(7)},
{"John", "Doe", "Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black", "Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White", "Speed reading", new Integer(20),
new Boolean(true)},
{"Joe", "Brown", "Pool", new Integer(10), new Boolean(false)}};
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Project3 frame = new Project3();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Project3() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(null);
scrollPane = new JScrollPane();
scrollPane.setBounds(139, 162, 469, 420);
panel.add(scrollPane);
table_1 = new JTable(data, columnNames);
scrollPane.setViewportView(table_1);
table_1.setFillsViewportHeight(true);
table_1.setModel(new DefaultTableModel(new Object[][]{
{"Nemo", "blah", "Pizza", "65kr", new Integer(7)},
{"Nemo", "blah", "Rowing", "1 000 000kr", Boolean.TRUE},
{"Sue", "blah", "Knitting", new Integer(2), Boolean.FALSE},
{"Jane", "blah", "Speed reading", new Integer(20), Boolean.TRUE},
{"Joe", "Brown", "Pool", new Integer(10), Boolean.FALSE},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},
{null, null, null, null, null},},
new String[]{
"Restaurant", "Dish", "Type", "Price", "Rating"}));
JButton btnChangeadd = new JButton("Change/Add");
btnChangeadd.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// CALL CHANGE METHOD HERE
}
});
btnChangeadd.setFont(new Font("Lucida Grande", Font.PLAIN, 16));
btnChangeadd.setBounds(143, 104, 175, 42);
panel.add(btnChangeadd);
JLabel lblNewLabel = new JLabel("Welcome RestaurantID");
lblNewLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 24));
lblNewLabel.setBounds(264, 56, 260, 36);
panel.add(lblNewLabel);
JButton button = new JButton("+");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// CALL SOMETHING HERE IF YOU WANT
}
});
button.setBounds(66, 248, 40, 29);
panel.add(button);
JButton button_1 = new JButton("-");
button_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
button_1.setBounds(66, 289, 40, 29);
panel.add(button_1);
JButton btnDelete = new JButton("Delete");
btnDelete.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//DELETE METHOD
}
});
btnDelete.setFont(new Font("Lucida Grande", Font.PLAIN, 16));
btnDelete.setBounds(344, 104, 191, 42);
panel.add(btnDelete);
JButton btnLogOut = new JButton("Log out");
btnLogOut.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
btnLogOut.setBounds(667, 6, 117, 29);
panel.add(btnLogOut);
}
}
最佳答案
我认为您正在寻找 ActionListener 而不是 MouseListener。您可以按照添加 MouseListener 的相同方式向 JButton 添加操作监听器。
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//code you want to run when the button gets pressed
}
}
单击按钮时将运行 actionPerformed 方法。这是编写 Action 监听器的一个很好的教程:http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
在该教程中,他们做的事情有点不同。他们有一个扩展 ActionListener 并实现 actionPerformed 方法的类。如果这样做,那么您将整个类作为 Action 监听器添加到按钮。因此,如果您的按钮是在扩展 Action 监听器的类中创建的,您将执行以下操作:
button.addActionListener(this);
这允许您为多个按钮使用一个 actionPerformed 方法。要知道在 actionPerformed 方法中单击了哪个按钮,您可以在 ActionEvent 对象上调用 getSource 方法,如下所示:
if(e.getSource() == 按钮)
如果您需要有关让类扩展 ActionListener 的更多说明,请告诉我。
编辑:
绝对误解了你问的是什么。不过,我仍然推荐使用 Action 监听器,而不是使用鼠标监听器处理按钮按下的方式。如果您澄清要如何更改数据,我可能会提供帮助。
关于java - 更改和删除按钮的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541382/