首先电脑配置如下
在如上两组配置中,运行使用了 Swing 编写的 UI 程序,在使用过程中,如果触发中文输入法,就会导致软件布局错乱
困扰了我很久了。。。求大佬帮忙
登录框代码示例:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class SwingLoginExample {
public static void main(String[] args) {
// 创建 JFrame 实例
JFrame frame = new JFrame("Login Example");
// Setting the width and height of frame
frame.setSize(350, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/* 创建面板,这个类似于 HTML 的 div 标签
* 我们可以创建多个面板并在 JFrame 中指定位置
* 面板中我们可以添加文本字段,按钮及其他组件。
*/
JPanel panel = new JPanel();
// 添加面板
frame.add(panel);
/*
* 调用用户定义的方法并添加组件到面板
*/
placeComponents(panel);
// 设置界面可见
frame.setVisible(true);
}
private static void placeComponents(JPanel panel) {
/* 布局部分我们这边不多做介绍
* 这边设置布局为 null
*/
panel.setLayout(null);
// 创建 JLabel
JLabel userLabel = new JLabel("User:");
/* 这个方法定义了组件的位置。
* setBounds(x, y, width, height)
* x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
*/
userLabel.setBounds(10,20,80,25);
panel.add(userLabel);
/*
* 创建文本域用于用户输入
*/
JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);
// 输入密码的文本域
JLabel passwordLabel = new JLabel("Password:");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);
/*
*这个类似用于输入的文本域
* 但是输入的信息会以点号代替,用于包含密码的安全性
*/
JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);
// 创建登录按钮
JButton loginButton = new JButton("login");
loginButton.setBounds(10, 80, 80, 25);
panel.add(loginButton);
}
}
还有比如 BurpSuite 这款软件,也是触发输入法就会错乱
1
oneforallsoft 2021-05-21 08:15:50 +08:00
都什么年代了 还搞 swing 浪费宝贵生命
|
2
winterbells 2021-05-21 08:44:38 +08:00 via Android
我印象里也遇到过,好像是在 IDE 里改编码或者是编译时加 UTF8 还是 GBK 来着
Jetpack Compose 也支持桌面了,也是跑 Java 上的,或许这个简单点 |
3
supermoonie 2021-05-21 09:03:55 +08:00 via iPhone
@winterbells jb 的 chromium 内核的浏览器咋样了
|
4
amwyyyy 2021-05-21 09:14:21 +08:00
不要把时间浪费在这里
|
5
wangsipeng95 2021-05-21 09:17:24 +08:00
我一直在想这个 Swing 到底是啥。。。
|
6
happyeveryday 2021-05-21 10:25:56 +08:00
不要把时间浪费在这里,学这就是浪费生命
|
7
iminto 2021-05-21 10:46:21 +08:00
我写的 swing gui 没遇到过你说的问题。
绝对定位这种方式,很少人用了,swing 有自己的 flow 布局。 另外,可以考虑用 idea 或者 netbean 的可视化插件来拖拉拽控件 |
8
qping 2021-05-21 11:57:15 +08:00
搞个浏览器界面呗
|
9
raaaaaar 2021-05-21 12:00:58 +08:00 via Android
表示现在做实验还在用这玩意
|
10
nicevar 2021-05-21 12:28:54 +08:00 1
楼主,这个可以调节一下分辨率试试看,win10 下面 125%的缩放容易导致 java 软件出现这个问题
另外楼上那些不提供解决方案说废话倒是很起劲 |
11
HolyGu OP @oneforallsoft
@amwyyyy @iminto 不是自己写的软件,,是市面上挺多商业化软件,都遇到了这个问题,例如 BurpSuite 、SoapUI 、CobaltStrike 之类的,凡是使用了 Swing 的,都会遇到这个问题 |