我想在NetBeans IDE中向JTable添加一个右键单击弹出菜单(看起来像一个简单的任务...大声笑)
我得到了部分工作
但这只是部分有效.现在,当我右键单击Table时,弹出菜单,但JTable中的选定行不会改变.因此,当调用menuitem的actionPerformed时,我不知道JTable中的哪一行被点击了.
我怎么能得到这个?或者在netbeans中有更简单的方法吗?
我知道还有其他方法(在代码中),但我更喜欢使用netbeans GUI builder.
有没有人曾经这样做过?
谢谢你的帮助!
我正在使用JSpinner像表格单元格编辑器,我有一个恼人的问题:
单元格保持不可编辑模式,直到我点击它,因为不可编辑我的意思是我无法写入它(它没有焦点因此它不接受输入键盘)但我可以改变值 - 向下箭头(键盘).
那么,当我选择一个按键时,我必须做什么来集中我的表格?
除了那个问题,我的SpinnerEditor类运行得很好.
谢谢大家.
我的应用程序中有很多jTextFields(大约34个jTextFields),我希望所有这些文本在获得焦点时选择所有文本,并且在焦点丢失时不选择任何文本.
有没有办法用一个监听器做这个或者我应该为这34个jTextField中的每一个写一个"FocusGained"和一个"FocusLost"?
谢谢
考虑一个JFormattedTextField(或任何真正的JTextComponent),其中有一个前缀和一个后缀显示在该字段的实际"文本"周围.
例如,double 3.5将是字符串(通过格式化)"3.50",其前面是前缀"$",后缀"",显示文本为"$ 3.50".
显然,这很容易做到.但是,仍允许用户选择前缀/后缀中的文本,因此可以想象删除部分或全部前缀/后缀.我希望限制用户,使得根本不能选择前缀/后缀(仍然是文本字段的一部分,因此没有JLabel).我几乎可以使用CaretListener(或通过覆盖setCaretPosition/moveCaretPosition)来完成此操作,这会阻止Ca选择整个字段,并且它会阻止使用箭头键移动到前缀/后缀中.但是,鼠标拖动和移位箭头键仍允许选择移动到这些受限区域.
有任何想法吗?
我需要启蒙.
如何添加动作actionListener事件绑定到菜单,而不绑定到菜单ITEM这里是演示代码,有效(在menuITEM上)..
menuFileItem.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("It works");
}
}
);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试相同的,但只是在菜单本身它不起作用!
menuFile.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Plz work... :( ");
}
}
);
Run Code Online (Sandbox Code Playgroud)
可以将监听器添加到菜单中吗?我教过听众可以添加到一切.
我在Java中有一个SNMP陷阱应用程序,旨在侦听SNMP代理并在JFrame窗口中的JTextArea上打印接收到的SNMP消息.
下面的第一部分是我的源代码,显示了TrapReceiver类的内容.在这个类中,listen方法是充分利用工作的地方.该类在JFrame类中进行实例化,我打算在上面提到的JTeaxtArea上显示消息.我将JTextArea对象的引用,SNMP代理URL和端口发送到TrapReceiver类的构造函数中,然后调用TrapReceiver对象的run方法以在JFrame实例以外的单独线程中开始执行.下面的第二部分展示了我如何在JFrame实例中实例化TrapReeceiver类.
当我运行应用程序时,我注意到JFrame实例(即GUI)正在冻结,并且没有在JFrame实例中提到的JTeaxtArea上打印消息,该实例实例化下面第一部分中所示的类TrapReeceiver.
我的问题是为什么JFrame实例(即GUI)是冻结的,尽管TRapReceiver本身是作为一个单独的线程执行的?此外,我想知道这个冻结问题的可能解决方案是什么.提前致谢.
PS:我已经验证了TrapReceiver工作正常并且可以在没有GUI的情况下作为独立应用程序运行时将消息打印到标准输出,但是由于某些可能的线程同步问题,这个GUI正在以某种方式冻结.我尝试运行TrapReceiver而不用线程,即使在这种情况下,GUI仍然处于冻结状态.
第一部分
package com.[Intenionally removed].snmp;
import java.io.IOException;
import javax.swing.JTextArea;
import org.snmp4j.*;
import org.snmp4j.mp.MPv1;
import org.snmp4j.mp.MPv2c;
import org.snmp4j.security.Priv3DES;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.TcpAddress;
import org.snmp4j.smi.TransportIpAddress;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.transport.AbstractTransportMapping;
import org.snmp4j.transport.DefaultTcpTransportMapping;
import org.snmp4j.transport.DefaultUdpTransportMapping;
import org.snmp4j.util.MultiThreadedMessageDispatcher;
import org.snmp4j.util.ThreadPool;
public class TrapReceiver implements CommandResponder, Runnable {
private String targetSnmpAgentURL;
private int targetSnmpAgentPort;
private JTextArea outConsole;
public TrapReceiver() {
}
public TrapReceiver(JTextArea outConsole) {
this.outConsole = outConsole;
}
public TrapReceiver(JTextArea outConsole, String targetSnmpAgentURL, int targetSnmpAgentPort) {
this.targetSnmpAgentURL = targetSnmpAgentURL; …Run Code Online (Sandbox Code Playgroud) 我想要获得我的系统的运行平衡.为此,我从列AMOUNT获取jtable中所有数字的总和,并将总和减去txtLoanAmount中的值.这是我的代码片段:
String LoanAmount = txtLoanAmount.getText();
float f = Float.valueOf(LoanAmount.trim()).floatValue();
float balance = 0;
float sum = 0;
for(int i=0;i<=tableLedger.getRowCount()-1;i++) {
sum = sum + Float.parseFloat(tableLedger.getModel().getValueAt(i, 2).toString());
}
balance = f - sum;
System.out.println(balance);
Run Code Online (Sandbox Code Playgroud)
现在我收到错误消息:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "20,475.00"
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?任何帮助将不胜感激.谢谢
我想取消正在运行的任务并将其替换为同一线程上的新任务。
在下面的代码中,我使用了一个单线程执行器来启动一个新任务并捕获一个Future代表它的。然后我用Future取消了任务。但是,任务并没有取消。
示例代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
class Task implements Runnable {
public void run() {
System.out.println("New task started");
int i = 0; while (true) i++;
}
}
public class TaskLauncher extends JFrame {
private JButton button = new JButton("Start new task");
private ExecutorService executor = Executors.newSingleThreadExecutor();
private Future<?> future;
public TaskLauncher() {
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) …Run Code Online (Sandbox Code Playgroud) 我有一个jtable有一个编辑按钮,当我选择一行并单击编辑按钮和编辑字段,然后单击保存按钮,该行不更新,我必须刷新我的表以更改该行!
我的代码:
if (e.getSource() == editButton) {
selectedRow = uTable.getSelectedRow();
if (selectedRow >= 0) {
editUser(selectedRow);
} else {
JOptionPane.showMessageDialog(null, "Select a row");
}
}
public void editUser(int row) {
UserInformation userInf = userModel.getSelectedMember(row);
NewUserFrame_Edit edit = new NewUserFrame_Edit(userInf, row);
}
...
Run Code Online (Sandbox Code Playgroud)
我的NewUserFrame_Edit类:
public class NewUserFrame_Edit extends javax.swing.JFrame {
private AllUser userModel;
private int selectedrow;
private String gender;
public NewUserFrame_Edit(AllUser userModel,UserInformation userinf, int row) {
...
this.userModel = userModel;
jTextField1.setText(userinf.getFname().toString().trim());
jTextField2.setText(userinf.getLname().toString().trim());
if (userinf.getGender().equals("Male")) {
jRadioButton1.setSelected(true);
} else {
jRadioButton2.setSelected(true);
} …Run Code Online (Sandbox Code Playgroud) 有没有办法创建带有垂直标题的表格视图?我在 javafx 中没有看到任何选项可以执行此操作。