Я очень новичок в Java. Я должен иметь рамку с двумя кнопками. Первая кнопка позволяет пользователю просматривать изображение, и оно работает. Вторая кнопка должна задавать параметр с помощью диалогового окна, но он даже не отображается в кадре. Что я делаю неправильно? Пожалуйста, помогите. Поскольку я очень новичок в Java, если у вас есть какое-либо возможное решение, объясните, как я самый тупой человек в мире.Первая кнопка появляется на кадре, но вторая кнопка не находится в java
Редактировать: Я решил проблему глупо, но спасибо в любом случае. Я добавил setVisible (true) для кнопки2 и как-то это сработало. Странно то, что я не делал то же самое для кнопки, но все же он работает. Я не понял, но если он работает, это работает. Спасибо снова, надеюсь, что кто-то еще сможет получить решение из ваших ответов.
public class ImageBrowser extends JFrame {
private static final long serialVersionUID = 1L;
JButton button, button2;
JLabel label;
private int K;
private int IFP;
public ImageBrowser() {
super("Image Browser");
button = new JButton("Browse");
button.setBounds(200, 300, 90, 40);
label = new JLabel();
label.setBounds(10, 10, 256, 256);
button2 = new JButton("Parameters");
button2.setBounds(500, 300, 150, 40);
add(button);
add(label);
add(button2);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// textArea.setText("");
JFileChooser file = new JFileChooser();
file.setCurrentDirectory(new File(System
.getProperty("user.home")));
// filter the files
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"*.Images", "jpg", "gif", "png", "tif");
file.addChoosableFileFilter(filter);
int result = file.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = file.getSelectedFile();
String path = selectedFile.getAbsolutePath();
label.setIcon(ResizeImage(path));
getPixels(selectedFile);
}
else if (result == JFileChooser.CANCEL_OPTION) {
System.out.println("No File Select");
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = JOptionPane
.showInputDialog("Please input Parameter k");
if (input == null)
return;
int K = Integer.parseInt(input.trim());
input = JOptionPane
.showInputDialog("Please input Parameter ifp");
if (input == null)
return;
int IFK = Integer.parseInt(input.trim());
}
});
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(100, 100);
setSize(700, 400);
setVisible(true);
}
public static void main(String[] args) throws IOException {
new ImageBrowser();
}
}
Этот код работает для меня. –
Java GUI должны работать с различными ОС, размером экрана, разрешением экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –
1) Обеспечьте ASCII-искусство или простой рисунок * предназначенного макета GUI при минимальном размере и, если он изменен, с большей шириной и высотой. 2) Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). (Похоже, что прослушиватели действий, а также методы 'getPixels (..)' и 'ResizeImage (..)' не имеют отношения к проблеме компоновки. 3) Изучите общую номенклатуру Java (соглашения об именах - например, 'EveryWordUpperCaseClass' , 'firstWordLowerCaseMethod()', 'firstWordLowerCaseAttribute', если это не' UPPER_CASE_CONSTANT') и использовать его последовательно ... –