- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正处于创建运算符(operator)工/客户系统的程序的开始阶段,现在我刚刚创建了登录 GUI,但我在使用
setLocation();
方法。我将它设置为 250、250,但它使我的 GUI 的高度变得非常疯狂。如果有人能够解决这个问题,我的代码如下。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main extends JFrame {
private static final int HEIGHT = 1003;
private static final int WIDTH = 400;
JTextField _uid = new JTextField(10);
JPasswordField _pwd = new JPasswordField(10);
JButton _login = new JButton("Login");
JButton _reset = new JButton("Reset");
public Main() {
super("Login - Durptech");
Container pane = getContentPane();
setLayout(new FlowLayout());
add(new JLabel("User ID:"));
add(_uid);
add(new JLabel("Password:"));
add(_pwd);
add(_login);
add(_reset);
_reset.addActionListener(new ResetButtonHandler());
setSize(WIDTH, HEIGHT);
setVisible(true);
setResizable(false);
setLocation(250, 250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private class ResetButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
_uid.setText("");
_pwd.setText("");
_uid.requestFocusInWindow();
}
}
public static void main(String[] args) {
new Main();
}
}
最佳答案
我自己,我会使用 JOptionPane 而不是 JFrame 来创建这个对话框:
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class UserIdPasswordPanel extends JPanel {
JTextField selectionField = new JTextField(10);
JTextField userIDField = new JTextField(10);
JTextField passwordField = new JTextField(10);
public UserIdPasswordPanel(JFrame frame) {
add(new JButton(new AbstractAction("Login") {
@Override
public void actionPerformed(ActionEvent arg0) {
LoginPane loginPane = new LoginPane(UserIdPasswordPanel.this,
"My Login Panel");
int result = loginPane.show();
System.out.println("" + result);
if (result >= 0) {
String selectionText = LoginPane.options[result].toString();
if (selectionText.equals(LoginPane.LOGIN)) {
System.out.println("do some login action here");
} else if (selectionText.equals(LoginPane.RESET)) {
System.out.println("do some reset action here");
}
// just to show that this works:
selectionField.setText(selectionText);
userIDField.setText(loginPane.getUserId());
// !! never do this !!!!!
passwordField.setText(new String(loginPane.getPassword()));
}
}
}));
selectionField.setEditable(false);
userIDField.setEditable(false);
passwordField.setEditable(false);
add(new JLabel("Selection: "));
add(selectionField);
add(new JLabel("ID: "));
add(userIDField);
add(new JLabel("Password: "));
add(passwordField);
}
private static void createAndShowGui() {
JFrame frame = new JFrame("UserIdPasswordPanel");
UserIdPasswordPanel mainPanel = new UserIdPasswordPanel(frame);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
class LoginPane {
public static final String LOGIN = "Login";
public static final String RESET = "Reset";
public static final Object[] options = { LOGIN, RESET };
private JTextField userIdField = new JTextField(10);
private JPasswordField passwordField = new JPasswordField(10);
private Component parent;
private String title;
private JPanel message = new JPanel();
public LoginPane(Component parent, String title) {
this.parent = parent;
this.title = title;
message.setLayout(new GridBagLayout());
GridBagConstraints gbc = getGbc(0, 0);
message.add(new JLabel("User ID:"), gbc);
gbc = getGbc(1, 0);
message.add(userIdField, gbc);
gbc = getGbc(0, 1);
message.add(new JLabel("Password:"), gbc);
gbc = getGbc(1, 1);
message.add(passwordField, gbc);
}
private GridBagConstraints getGbc(int x, int y) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.insets = new Insets(5, 5, 5, 5);
gbc.anchor = (x == 0) ? GridBagConstraints.WEST : GridBagConstraints.EAST;
return gbc;
}
public String getUserId() {
return userIdField.getText();
}
public char[] getPassword() {
return passwordField.getPassword();
}
public int show() {
Object initialValue = "Login";
return JOptionPane.showOptionDialog(parent, message, title,
JOptionPane.YES_NO_OPTION, JOptionPane.PLAIN_MESSAGE, null,
options, initialValue);
}
}
关于Java setLocation() 事故,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388459/
阅读了一些内容,但我正在努力解决这个问题。基本上,必须将 Setlocal 与启用和禁用延迟扩展一起使用才能使用和操作带有感叹号的变量。以下代码示例。代码部分可以在一个 session 中循环多次,在
是否可以在浏览器不刷新页面的情况下更改位置 url? 想象一下,我希望用户更改某些字段的某些值,因此要更新的是url(问号后面) 所以 www.mysite.com/mypage?level=1&fa
我正处于创建运算符(operator)工/客户系统的程序的开始阶段,现在我刚刚创建了登录 GUI,但我在使用 setLocation(); 方法。我将它设置为 250、250,但它使我的 GUI 的高
对于批处理新手而言,“变量延迟”这个概念很可能闻所未闻,但是,它却像一堵横亘在你前进道路上的无形高墙,你感受不到它的存在,但当你试图往前冲时,它会把你狠狠地弹回来,让你无法逾越、无功而返;而一旦找到
我正在尝试在批处理脚本中一起使用setlocal enabledelayedexpansion和cd,这似乎无法将更改持久化回shell。 我需要setlocal enabledelayedexpan
你怎么用setlocal在批处理文件中?我只是在学习脚本,并希望用非常简单的术语向我解释。 我有一个脚本停止并说 c:\superapp.out endlocal start notepad c:\s
这个问题已经有答案了: how to draw multiple rectangles (1 个回答) 已关闭 6 年前。 目前,此代码段通过鼠标单击移动已在框架上绘制的当前矩形。该点击的坐标转到变量
我有以下代码,我尝试将 JLabel 放置在 JFrame 上的自定义位置。 public class GUI extends JFrame { /** * * @para
使用 SSCCE 和变通方法编辑 我想以编程方式更改 JDialog 的位置。 public class SSCCE { public static void main(String[] pArg
我是 Java 新手。我正在尝试移动当前居中的 JButton,因此我将位置更改为静态位置但它没有移动。任何想法? public Main(BufferedImage image) { thi
在我的应用程序中,我使用 gps 获取地址、纬度和经度。我们还需要捕获视频并将该位置设置为视频。因此可以在视频-> 详细信息选项中看到这一点。 我用照片成功完成了,但无法用视频完成。 我为此使用 Me
这是我写的代码: super("Add contact"); setLayout(new FlowLayout()); IPAddress = new JLabel("IP Address"); IP
我不明白我做错了什么,输出始终是整个脚本,带有 Invalid parameter to setlocal 错误!这可能只是一个愚蠢的错误,但它让我发疯。 SETLOCAL ENABLEDELAYED
在 Windows 批处理文件中编写脚本时,有时脚本的正确执行需要使用 setlocal 命令。我对使用 setlocal 的主要提示是,我经常执行复杂的 for & if 语句,在这些语句中我在该代
我有一个带有一些功能的批处理文件。每个函数都使用 setlocal,这样它的变量就不会污染主批处理脚本。我注意到我第一次在主批处理脚本中而不是在每个嵌套的 setlocal 中只需要参数 ENABLE
我有以下代码,我尝试将 JLabel 放在 JFrame 上的自定义位置。 public class GUI extends JFrame { /** * * @param
试图在变量中保留感叹号。下面是一个简化的说明性脚本: echo off set testvar="C:\Windows\TestOfIllegals[!]" echo Pre-
我正在尝试制作一个简单的批处理文件(“javapath.bat”)以在需要时将 Java 编译器添加到路径中,这样它就不会一直在路径上。我还希望能够在其他构建脚本中执行类似 @call javapat
嘿,这是我的第二篇文章,所以不要生我的气,但我在使用 java 中的 JPanel 时遇到了问题。我正在尝试设置大小和位置,但它不起作用,我尝试过 repaint();但这不起作用。有什么帮助吗? 这
如何在 LWUIT 中设置按钮位置? public void error() { error = new Dialog(); e = new Label("EMPTY
我是一名优秀的程序员,十分优秀!