我对Java非常陌生,尤其是Java的这一方面。我当前正在尝试创建一个将包含数据CSV文件的JTable,然后将该表显示在GUI上,您可以在其中选择数据的特定部分,并从中创建可视化效果。目前,我正在为MouseClicked使用MouseListener-这将正确地将单元格输出到命令行。但是,当对MouseDragged使用MouseMotionListener时,它只会多次打印(从mouseClicked中)单击的单元格。我知道这与mouseClicked有关(或者至少是这样),但我无法理解。
码:
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import java.awt.Color;
public class TableView extends ChartGUI{
/**
*
*/
public JScrollPane GetPanel() {
return scrollPane;
}
public void SetScrollPane(JScrollPane pane) {
scrollPane = pane;
}
public TableView(String title, Object[][] data) {
if(data != null) {
Object[] columnNames = data[0];
Object[][] tableData = new Object[data.length][];
for(int i = 0; i < (data.length - 1); i++){
tableData[i] = data[i+1];
}
table = new JTable(tableData, columnNames);
table.setCellSelectionEnabled(true);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(PANE_WIDTH, PANE_HEIGHT));
SetScrollPane(scrollPane);
} else {
System.out.println("Null Data");
}
/** MouseListener to allow users to select specific cells, printing the data to the command line */
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
col = table.getSelectedColumn();
row = table.getSelectedRow();
selData = GetData(table, row, col);
System.out.println("Selected data: MouseClicked :: " + (String)selData);
}
});
table.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent evt) {
col = table.getSelectedColumn();
row = table.getSelectedRow();
selData = GetData(table, row, col);
System.out.println("Selected data: MouseReleased :: " + (String)selData);
}
});
table.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
col = table.getSelectedColumn();
row = table.getSelectedRow();
selData = GetData(table, row, col);
System.out.println("Selected data: MouseDragged :: " + (String)selData);
}
});
}
/** A method to return the values at an index selected by the user, as a String */
public String GetData(JTable table, int row_index, int col_index){
return (String)table.getModel().getValueAt(row_index, col_index);
}
public static void main(String[] args){
System.out.println("Why are you doing this?, maybe we should have some JUnit Tests");
}
private static final long serialVersionUID = 4901866775892531001L;
private JScrollPane scrollPane;
private JTable table;
private String selData;
private int col;
private int row;
private int PANE_WIDTH = 900;
private int PANE_HEIGHT = 600;
}
谢谢您的帮助,不胜感激!
java大神给出的解决方案
不能通过鼠标移动来选择表格单元格,而是通过单击来选择它们。您的mouseDragged方法将在每次触发时打印出所选表格单元格的信息,但是所选表格单元格仅在您单击时更改。您可能想要从mouseEvent获取当前鼠标位置,并使用该信息选择一个新的表格单元格,然后打印出该信息。
java:继承 - java有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…
Java-如何将此字符串转换为日期? - java我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…
从方法返回数组-Java - javaprivate static Coordinate[] getCircleCoordintaes() { Coordinate coordinates[] = {new Coordinate(0, 0)}; return coordinates; } 以上程序工作正常。在上面的程序中,返回的坐标数组首先初始化了数组使用这条线Coordinate coordi…
Java Swing SearchBox模型 - java我需要使用Java Swing的搜索框,如果单击任何建议,当输入字母时它将显示来自数据库的建议,它将执行一些操作。如果有可能在Java swing中,请提供源代码提前致谢 java大神给出的解决方案 您可以使用DefaultComboBoxModel,输出将是这样。Try this在此代码中,您将找到countries数组,因此您需要从数据库中获取此数组。
JAVA:如何检查对象数组中的所有对象是否都是子类的对象? - java我有一个对象数组。现在,我要检查所有这些对象是否都是MyObject的实例。有没有比这更好的选择:boolean check = true; for (Object o : justAList){ if (!(o instanceof MyObject)){ check = false; break; } } java大神给出的解决方案 如果您不喜欢循环,则…