第一个按钮出现在框架上,但第二个按钮不在java中

时间:2017-02-20 11:59:54

标签: java swing layout-manager null-layout-manager

我是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();

}

}

1 个答案:

答案 0 :(得分:4)

您将布局设置为null,这样您就可以进行绝对定位,并且您的组件会相互重叠

  setLayout(null); 

您可以尝试其他布局管理器,例如FlowLayout:

  setLayout(new FlowLayout()); 

Here您有布局管理员的说明