Я не знаю, почему это не делает его видимым, когда я снова нажмите на кнопку.
Зачем это делать, поскольку все действия ActionListener (код, который вызывается при нажатии кнопки), постоянно устанавливают метку невидимой?
Решение состоит в том, чтобы просто переключить его видимость:
lblHello.setVisible(!lblHello.isVisible());
Обратите внимание, чтобы быть безопасным, лучше перепроверить и перекрашивать контейнера после внесения таких изменений, так:
btnHide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
lblHello.setVisible(!lblHello.isVisible());
revalidate();
repaint();
}
});
как это избавит GUI от «грязных» пикселей, которые могут возникнуть в результате добавления, и особенно от удаления видимых компонентов.
Слово об этом:
btnHide.setBounds(185, 199, 89, 23);
Это говорит о том, что вы используете пустые макеты с setBounds(...)
. Хотя это часто кажется, что новички Swing-кодеры лучше всего подходят для создания сложных графических интерфейсов, он снова будет преследовать их, поскольку это будет означать, что GUI будет выглядеть нормально на одной платформе и на одной платформе, а если позже вы захотите улучшать или улучшать GUI, это может быть сделано только с большим трудом и риском ошибок. Намного лучше учиться и использовать менеджеров макетов.
Еще одна рекомендация:
Если ваше желание изменить внешний вид графического интерфейса пользователя на кнопку печати, а затем также взглянуть на CardLayout (пожалуйста, проверьте CardLayout Tutorial), так как это может быть способ чисто и легко поменять взгляды
и лучше рекомендацию:
S осле JLabel только показывает его текст или его изображение или оба, лучший способ сделать это «невидимый», чтобы удалить его текст и его значок, как отмечает Эндрю Томпсон ниже:
// get rid of its text
lblHello.setText("");
// and if needed
lblHello.setIcon(null);
Это не будет работать для текстовых компонентов, таких как JTextFields и JTextAreas, или других компонентов, которые имеют больше «heft», чем JLabel, включая почти все другие компоненты взаимодействия с пользователем.
Вы не предоставили полный код, но я предлагаю убедиться, что вы перепроверить родителя 'объекта lblHello' поэтому его перекрасили, чтобы отразить изменения. – fabfas