gpt4 book ai didi

java - 根据框架大小更改按钮的文本可见性

转载 作者:行者123 更新时间:2023-12-01 10:03:54 25 4
gpt4 key购买 nike

我的按钮有文本和图标。如果用户调整框架大小并使按钮不可见,我想隐藏文本。我找到了滚动 Pane 的解决方法,但我想知道是否有更好的解决方案。提前致谢。

我的解决方案:

public class IconButtonTest extends JFrame {

private JScrollPane buttonScrollPane;

private JButton button1;
private JButton button2;
private JButton button3;

public IconButtonTest() {
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));

ImageIcon icon = new ImageIcon();

button1 = new JButton("Button1", icon);
button2 = new JButton("Button2", icon);
button3 = new JButton("Button2", icon);

buttonPanel.add(button1);
buttonPanel.add(button2);
buttonPanel.add(button3);

buttonScrollPane = new JScrollPane(buttonPanel);
buttonScrollPane.setBorder(null);
add(buttonScrollPane, BorderLayout.NORTH);

addComponentListener(new ResizeListener());

setSize(300, 300);
setVisible(true);
}

public static void main(String[] args) {
new IconButtonTest();
}

private class ResizeListener extends ComponentAdapter {
@Override
public void componentResized(ComponentEvent e) {
button1.setText("Button1");
button2.setText("Button2");
button3.setText("Button2");

SwingUtilities.invokeLater(new Runnable() {
public void run() {
if (buttonScrollPane.getHorizontalScrollBar().isVisible()) {
button1.setText("");
button2.setText("");
button3.setText("");
}
}
});

}
}
}

我向 JPanel 添加了按钮,并将该面板添加到带有滚动 Pane 的框架中。在 ResizeListener 中,我检查水平滚动是否可见。如果它是可见的,则意味着 buttonPanel 溢出了可见区域。

最佳答案

I found a workaround with scroll pane, but I want to know if there is a better solution.

不知道是否更好,但不需要滚动 Pane 。只需将监听器添加到面板,然后您就可以根据实际宽度检查首选宽度:

button1.setText("Button1");
button2.setText("Button2");
button3.setText("Button2");

JPanel panel = (JPanel)e.getComponent();

if (panel.getSize().width < panel.getPreferredSize().width)
{
button1.setText("");
button2.setText("");
button3.setText("");
}

I want to hide texts, if user resize the frame and make one the buttons invisible.

如果您只是想确保所有按钮都可以访问,那么您可以:

  1. 使用Wrap Layout 。按钮将换行,并且面板的高度将增加。

  2. 使用 ScrollContainer 的概念。按钮将根据需要添加到容器的开头/结尾,以允许您滚动浏览当前不可见的按钮。请参阅:Moving left right in a JPanel

关于java - 根据框架大小更改按钮的文本可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com