java - JToggleButton API 中可能存在错误?

标签 java swing border-layout jtogglebutton

我从 java2s 得到了 JToggleButton 的例子.在代码中,我看到如果文本是“West”,则切换按钮无法正确显示文本。西方显示为我们...其他一切都很好。但是当text="west",即w小的时候就没有问题了。这是错误吗?

enter image description here

代码:

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JToggleButton;

public class MainClass {
 public static void main(String args[]) {
 JFrame f = new JFrame("JToggleButton Sample");
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 f.add(new JToggleButton("North"), BorderLayout.NORTH);
 f.add(new JToggleButton("East"), BorderLayout.EAST);
 f.add(new JToggleButton("West"), BorderLayout.WEST);
 f.add(new JToggleButton("Center"), BorderLayout.CENTER);
 f.add(new JToggleButton("South"), BorderLayout.SOUTH);
 f.setSize(300, 200);
 f.setVisible(true);
 }
}

最佳答案

MetalLookAndFeel - getPreferredSize 计算不正确

enter image description here

系统外观

enter image description here

光轮

enter image description here

物质

enter image description here

来自代码(使用 BorderLayout 将 JFrame、JPanel 作为容器的相同问题)

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class MainClass {

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(
                            "org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel");
                    //UIManager.getDefaults();
                } catch (Exception e) {
                }
            }
        });

       /*try {
            //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(laf.getName())) {
                    UIManager.setLookAndFeel(laf.getClassName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }*/

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("JToggleButton Sample");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel panel = new JPanel();
                panel.setLayout(new BorderLayout());
                panel.add(new JToggleButton("North"), BorderLayout.NORTH);
                panel.add(new JToggleButton("East"), BorderLayout.EAST);
                panel.add(new JToggleButton("West"), BorderLayout.WEST);
                panel.add(new JToggleButton("Center"), BorderLayout.CENTER);
                panel.add(new JToggleButton("South"), BorderLayout.SOUTH);
                f.add(panel);
                f.pack();
                //f.setSize(300, 200);
                f.setVisible(true);
            }
        });
    }
}

关于java - JToggleButton API 中可能存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798240/

相关文章:

java - 按下 X 按钮时复选框状态更改

Java gson 转换错误

java - 如何使用通用 JPanel() 管理 BorderLayout

java - 如何比较 If 语句中的 boolean 值与 Java 输出

java - Maven 在 Central 中搜索本地可用的 Artifact

Java 监听按钮和键盘点击

css - 在列模式下使用 Angular ui.layout - 如何创建底部对齐的元素

extjs - 在边框布局 extjs 中带有叠加层的可折叠面板

java - 来自服务器的错误 : Data source rejected establishment of connection, 消息: "Too many connections"

java - 将 N 个项目的集合转换为 N 个每个 1 个项目的集合?