我是Swing的新手,我有一个情况.我正在设计一个应用程序,它根据xml文件输入(元数据)动态呈现GUI组件.现在,我的大多数JTextField都将InputVerifier设置为它们,以进行验证.只要输入无效,输入验证程序就会弹出JOptionPane.
现在,如果用户输入无效数据并向前移动并单击面板上的按钮,则会弹出一个对话框,用户必须对其进行响应.但在此之后,按钮也不会绘制以释放状态.它仍然看起来像被按下但实际上它不是.由于整个代码非常混乱,我将问题场景放在下面的代码中: -
我应该怎么做才能让JButton看起来没穿#?如果逻辑也被解释,我将不胜感激.
提前致谢.
package test;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class VerifierTest extends JFrame {
private static final long serialVersionUID = 1L;
public VerifierTest() {
JTextField tf;
tf = new JTextField("TextField1");
getContentPane().add(tf, BorderLayout.NORTH);
tf.setInputVerifier(new PassVerifier());
final JButton b = new JButton("Button");
b.setVerifyInputWhenFocusTarget(true);
getContentPane().add(b, BorderLayout.EAST);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (b.hasFocus())
System.out.println("Button clicked");
}
}); …Run Code Online (Sandbox Code Playgroud)
我一直致力于个人项目,以便在编程方面做得更好.我的目标是让它更加强大,我刚刚开始.我是现任计算机科学专业的学生.无论如何,我正在努力制作一部分程序,如图所示.我计算小时工资并提供一些我尚未实施的产出.我正在使用DocumentListener,因此它会自动计算.当文本从一个盒子中完全删除时,我收到一个错误.我试图用if语句修复它:
if (tipMon.equals("") || tipMon == null) {
tipMon.setText("0");
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的.它还没有完成,我为noob代码道歉.我在两个月前开始实际编码.
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.Document;
import javax.swing.text.FieldView;
public class deliveryDocListener extends JFrame implements ActionListener,
DocumentListener{
private JLabel mon, tues, wed, thurs, fri, sat, sun, hourlyWage, blank, row2, monWage,
tuesWage,wedWage,thursWage, friWage, satWage, sunWage, total, totalTips, totalHours,
totalHourlyEarnings, totalPay, weekPay;
private JTextField hourlyWageInput, tipMon, tipTues, tipWed, tipThurs, tipFri, tipSat, tipSun,
hourMon, hourTues, hourWed, hourThurs, …Run Code Online (Sandbox Code Playgroud) 只有当所有字段中都存在有效数据时才会启用两个按钮,即数字值和无负数.您是如何做到的?
我将输入验证器设置为我的文本字段:
public class MyInputVerifier extends InputVerifier {
@Override
public boolean verify(JComponent input) {
String text = ((JTextField) input).getText();
try {
BigDecimal value = new BigDecimal(text);
return (value.scale() <= Math.abs(4));
} catch (NumberFormatException nfe) {
return false;
}
}
public static class Tester extends JFrame implements ActionListener {
JTextField tf1;
JButton okBtn;
public Tester() {
add(panel(), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 500);
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Tester();
}
});
} …Run Code Online (Sandbox Code Playgroud) 我正在制作一个程序,我必须验证第一列是否是IP地址.
到目前为止,我只想出了如何过滤行的方法.但是在将数据写入文件之前必须检查该列.
有人能帮助我吗?