【发布时间】:2017-02-20 11:59:54
【问题描述】:
我对 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();
}
}
【问题讨论】:
-
这段代码对我有用。
-
Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同的语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。
-
1) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度。 2) 为了尽快获得更好的帮助,请发布minimal reproducible example 或Short, Self Contained, Correct Example。 (似乎动作侦听器以及
getPixels(..)和ResizeImage(..)方法与布局问题无关。3)请学习常见的Java 命名法(命名约定-例如EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute除非它是UPPER_CASE_CONSTANT) 并始终使用它... -
.. 4) 源代码中的一个空白行是永远需要的。
{之后或}之前的空行通常也是多余的。 -
“我没明白,但如果它有效,它就有效。”(悲伤地摇头)这不是一个解决方案。这是一个可能会随机工作的黑客(并且通过扩展,随机失败)。使固定。这。布局。
标签: java swing layout-manager null-layout-manager