- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个 Java 日历。我想在单击日期时向弹出窗口添加功能并编辑 View 。1.如何向JTable的单元格添加 Action 监听器?2.当我点击日期(单元格)时,会弹出一个对话框来存储信息。
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Calender{
static JFrame Main_Frame;
static JButton Prev_button, Next_Button, Today_Button;
static JLabel Month_Label, Year_Label;
static JTable Calender_Table;
static JComboBox Year_Combobox;
static Container Pane_container;
static DefaultTableModel Calender_mTable;
static JScrollPane SCalender_Table;
static JPanel Calender_Panel;
static int Gre_Year, Gre_Month, Gre_Day, Current_Year, Current_Month;
public static void main (String args[]){
//try catch
try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (ClassNotFoundException e) {}
catch (InstantiationException e) {}
catch (IllegalAccessException e) {}
catch (UnsupportedLookAndFeelException e) {}
//create and settup frame
Main_Frame = new JFrame ("Calender");
Main_Frame.setSize(330, 375);
Pane_container = Main_Frame.getContentPane();
Pane_container.setLayout(null);
Main_Frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create controls
Month_Label = new JLabel ("January");
Year_Label = new JLabel ("Year:");
Year_Combobox = new JComboBox();
Prev_button = new JButton ("<");
Next_Button = new JButton (">");
Today_Button = new JButton("Today");
Calender_mTable = new DefaultTableModel(){public boolean isCellEditable(int rowIndex, int mColIndex){return true;}};
Calender_Table = new JTable(Calender_mTable);
SCalender_Table = new JScrollPane(Calender_Table);
Calender_Panel = new JPanel(null);
//Add all controls to panel
Pane_container.add(Calender_Panel);
Calender_Panel.add(Month_Label);
Calender_Panel.add(Year_Label);
Calender_Panel.add(Year_Combobox);
Calender_Panel.add(Prev_button);
Calender_Panel.add(Next_Button);
Calender_Panel.add(Today_Button);
Calender_Panel.add(SCalender_Table);
//listeners
Prev_button.addActionListener(new Prev_button_Action());
Next_Button.addActionListener(new Next_Button_Action());
Today_Button.addActionListener(new Today_Button_Action());
Year_Combobox.addActionListener(new Year_Combobox_Action());
// Calender_Table.addActionListener(new ActionLitsener());
//Set the border with name
Calender_Panel.setBorder(BorderFactory.createTitledBorder("Calendar"));
//Set all element place and size
Calender_Panel.setBounds(0, 0, 321, 333);
Month_Label.setBounds(160-Month_Label.getPreferredSize().width/2, 25, 100, 25);
Year_Label.setBounds(200, 305, 81, 21);
Year_Combobox.setBounds(230, 305, 81, 21);
Prev_button.setBounds(10, 25, 51, 26);
Today_Button.setBounds(128,5,65,26);
Next_Button.setBounds(260, 25, 51, 26);
SCalender_Table.setBounds(10, 51, 301, 256);
//set visible frame
Main_Frame.setResizable(false);
Main_Frame.setVisible(true);
//Getthe month and day from gregorian
GregorianCalendar calender = new GregorianCalendar(); //Create calendar
Gre_Day = calender.get(GregorianCalendar.DAY_OF_MONTH); //Get day
Gre_Month = calender.get(GregorianCalendar.MONTH); //Get month
Gre_Year = calender.get(GregorianCalendar.YEAR); //Get year
Current_Month = Gre_Month; //Match month and year
Current_Year = Gre_Year;
//Add the headers
String[] headers = {"Sunday", "Monday", "Tueday", "Wednesday", "Thursday", "Friday", "Saturday"}; //All headers
for (int i=0; i<7; i++){
Calender_mTable.addColumn(headers[i]);
}
//Set background
Calender_Table.getParent().setBackground(Calender_Table.getBackground());
//No resize or reorder
Calender_Table.getTableHeader().setReorderingAllowed(false);
Calender_Table.getTableHeader().setResizingAllowed(false);
//Single cell selection
Calender_Table.setColumnSelectionAllowed(true);
Calender_Table.setRowSelectionAllowed(true);
Calender_Table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//Set row column
Calender_Table.setRowHeight(38);
Calender_mTable.setColumnCount(7);
Calender_mTable.setRowCount(6);
//Populate the table
for (int a=Gre_Year-100; a<=Gre_Year+100; a++){
Year_Combobox.addItem(String.valueOf(a));
}
//Refresh calendar
Refresh_Calendar (Gre_Month, Gre_Year); //Refresh calendar
}
public static void Refresh_Calendar(int month, int year){
//Variables
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int dom, dow; //Number Of Days, Start Of Month
//allow the button = true
Prev_button.setEnabled(true);
Next_Button.setEnabled(true);
if (month == 0 && year <= Gre_Year-10){Prev_button.setEnabled(false);}
if (month == 11 && year >= Gre_Year+100){Next_Button.setEnabled(false);}
Month_Label.setText(months[month]);
Month_Label.setBounds(160-Month_Label.getPreferredSize().width/2, 25, 180, 25);
Year_Combobox.setSelectedItem(String.valueOf(year));
//Clear table
for (int a=0; a<6; a++){
for (int b=0; b<7; b++){
Calender_mTable.setValueAt(null, a,b );
}
}
//Get first day of month and number of days
GregorianCalendar calander = new GregorianCalendar(year, month, 1);
dom = calander.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
dow = calander.get(GregorianCalendar.DAY_OF_WEEK);
//Draw the calendar
for (int a=1; a<=dom; a++){
int row = new Integer((a+dow-2)/7);
int column = (a+dow-2)%7;
Calender_mTable.setValueAt(a, row, column);
}
//Apply renderers
Calender_Table.setDefaultRenderer(Calender_Table.getColumnClass(0), new Calender_TableRenderer());
}
static class Calender_TableRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, boolean focused, int row, int column){
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
if (column == 0 || column == 6){ //Week-end
setBackground(new Color(135,206,235));
}
else{ //Week days
setBackground(new Color(255, 255, 255));
}
if (value != null){
if (Integer.parseInt(value.toString()) == Gre_Day && Current_Month == Gre_Month && Current_Year == Gre_Year){ //Today
setBackground(Color.lightGray);
}
}
// getComponent(1).addFocusListener();
setBorder(null);
setForeground(Color.blue);
return this;
}
}
//listener
//set prev button listener
static class Prev_button_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (Current_Month == 0){
Current_Month = 11;
Current_Year -= 1;
}
else{
Current_Month -= 1;
}
Refresh_Calendar(Current_Month, Current_Year);
}
}
//set next button listener
static class Next_Button_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (Current_Month == 11){
Current_Month = 0;
Current_Year += 1;
}
else{ //Foward one month
Current_Month += 1;
}
Refresh_Calendar(Current_Month, Current_Year);
}
}
static class Today_Button_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
Current_Month = Gre_Month ;
Current_Year = Gre_Year;
Refresh_Calendar(Current_Month, Current_Year);
}
}
static class Year_Combobox_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (Year_Combobox.getSelectedItem() != null){
String b = Year_Combobox.getSelectedItem().toString();
Current_Year = Integer.parseInt(b);
Refresh_Calendar(Current_Month, Current_Year);
}
}
}
}
最佳答案
要在 JTable 单元格中添加操作监听器,您可以这样做。您可以将此 Calender_Table 变量重命名为 calenderTable。
calenderTable.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
// do some stuff
}
}
});
关于java - 如何向 JTable 添加 Action 监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33162795/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!