我是Java的新手。我应该有一个有两个按钮的框架。第一个按钮使用户浏览图像并且它可以工作。第二个按钮应该询问带有对话框的参数,但它甚至不会出现在框架上。
编辑:我已经以愚蠢的方式解决了这个问题,但无论如何都要感谢。我为button2添加了setVisible(true),并以某种方式工作。奇怪的是我没有为按钮做同样的事情,但它仍在工作。我没有得到它,但是如果它有效则可行。再次感谢,希望其他人能从你的答案中得到解决方案。
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();
}
}
答案 0 :(得分:4)
您将布局设置为null,这样您就可以进行绝对定位,并且您的组件会相互重叠
setLayout(null);
您可以尝试其他布局管理器,例如FlowLayout:
setLayout(new FlowLayout());
Here您有布局管理员的说明