首先电脑配置如下
在如上两组配置中,运行使用了 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 300 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 不要把时间浪费在这里/div> |
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 ![]() 楼主,这个可以调节一下分辨率试试看,win10 下面 125%的缩放容易导致 java 软件出现这个问题 另外楼上那些不提供解决方案说废话倒是很起劲 |
![]() | 11 HolyGu OP @oneforallsoft @amwyyyy @iminto 不是自己写的软件,,是市面上挺多商业化软件,都遇到了这个问题,例如 BurpSuite 、SoapUI 、CobaltStrike 之类的,凡是使用了 Swing 的,都会遇到这个问题 |