gpt4 book ai didi

java - 行动监听器中的问题

转载 作者:行者123 更新时间:2023-12-01 15:53:29 25 4
gpt4 key购买 nike

我想使用这个例子http://www.devx.com/getHelpOn/10MinuteSolution/20425但有一个问题,我不知道如何为我的按钮编写 Action 监听器,我的意思是我知道但在哪里?

请给我建议。我把上面的例子放在这里。

如果您有更好的例子,请告诉我...

    import com.sun.java.swing.*;
import com.sun.java.swing.table.*;
import java.awt.*;
import java.awt.event.*;

class JTableButtonRenderer implements TableCellRenderer {
private TableCellRenderer __defaultRenderer;

public JTableButtonRenderer(TableCellRenderer renderer) {
__defaultRenderer = renderer;
}

public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,
boolean hasFocus,
int row, int column)
{
if(value instanceof Component)
return (Component)value;
return __defaultRenderer.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);
}
}

class JTableButtonModel extends AbstractTableModel {
private Object[][] __rows = {
{ "One", new JButton("Button One") },
{ "Two", new JButton("Button Two") },
{ "Three", new JButton("Button Three") },
{ "Four", new JButton("Button Four") }
};

private String[] __columns = { "Numbers", "Buttons" };

public String getColumnName(int column) {
return __columns[column];
}

public int getRowCount() {
return __rows.length;
}

public int getColumnCount() {
return __columns.length;
}

public Object getValueAt(int row, int column) {
return __rows[row][column];
}

public boolean isCellEditable(int row, int column) {
return false;
}

public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
}

class JTableButtonMouseListener implements MouseListener {
private JTable __table;

private void __forwardEventToButton(MouseEvent e) {
TableColumnModel columnModel = __table.getColumnModel();
int column = columnModel.getColumnIndexAtX(e.getX());
int row = e.getY() / __table.getRowHeight();
Object value;
JButton button;
MouseEvent buttonEvent;

if(row >= __table.getRowCount() || row < 0 ||
column >= __table.getColumnCount() || column < 0)
return;

value = __table.getValueAt(row, column);

if(!(value instanceof JButton))
return;

button = (JButton)value;

buttonEvent =
(MouseEvent)SwingUtilities.convertMouseEvent(__table, e, button);
button.dispatchEvent(buttonEvent);
// This is necessary so that when a button is pressed and released
// it gets rendered properly. Otherwise, the button may still appear
// pressed down when it has been released.
__table.repaint();
}

public JTableButtonMouseListener(JTable table) {
__table = table;
}

public void mouseClicked(MouseEvent e) {
__forwardEventToButton(e);
}

public void mouseEntered(MouseEvent e) {
__forwardEventToButton(e);
}

public void mouseExited(MouseEvent e) {
__forwardEventToButton(e);
}

public void mousePressed(MouseEvent e) {
__forwardEventToButton(e);
}

public void mouseReleased(MouseEvent e) {
__forwardEventToButton(e);
}
}

public final class JTableButton extends JFrame {
private JTable __table;
private JScrollPane __scrollPane;

public JTableButton() {
super("JTableButton Demo");
TableCellRenderer defaultRenderer;

__table = new JTable(new JTableButtonModel());
defaultRenderer = __table.getDefaultRenderer(JButton.class);
__table.setDefaultRenderer(JButton.class,
new JTableButtonRenderer(defaultRenderer));
__table.setPreferredScrollableViewportSize(new Dimension(400, 200));
__table.addMouseListener(new JTableButtonMouseListener(__table));

__scrollPane = new JScrollPane(__table);
setContentPane(__scrollPane);
}

public static void main(String[] args) {
Frame frame;
WindowListener exitListener;

exitListener = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Window window = e.getWindow();
window.setVisible(false);
window.dispose();
System.exit(0);
}
};

frame = new JTableButton();
frame.addWindowListener(exitListener);
frame.pack();
frame.setVisible(true);
}
}

最佳答案

    new JButton("Button One").addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}
});

这是最简单的方法。您还可以创建一个实现 ActionListener 接口(interface)的常规类,并将其对象传递给 addActionListener 方法。在此示例中,我使用了匿名类。

您的代码进入 actionPerformed 方法。当有人点击按钮时它将被执行。

关于java - 行动监听器中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com