У меня есть как тексты, так и значки для моих кнопок. Я хочу скрыть тексты, если пользователь изменяет размер рамки и делает ее невидимой. Я нашел обходной путь с панелью прокрутки, но я хочу знать, есть ли лучшее решение. Заранее спасибо.Изменить видимость кнопок в соответствии с размером рамки
Мое решение:
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
и добавить эту панель к раме с помощью панели прокрутки. В ResizeListener
Я проверяю, отображается ли горизонтальная прокрутка или нет. Если это видно, значит, buttonPanel
переполнен видимой областью.
рассмотреть также 'JToolBar', который можно закрепить на большинстве L & Fs, или [вариант размера] (http://stackoverflow.com/a/14599176/230513). – trashgod