0

非静的メソッド addComponents ToPane(container) を静的コンテキストから参照できないというエラーが表示されます。

プログラミングを始めてまだ 2 か月しか経っていないので、ご容赦ください。

package prototype;

    import static com.oracle.util.Checksums.update;
    import java.awt.*;
    import java.util.Locale;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;

    public class NewClass {

        final static boolean shouldFill = true;
        final static boolean shouldWeightX = true;
        final static boolean RIGHT_TO_LEFT = false;

        public void addComponentsToPane(Container pane) {
            if (RIGHT_TO_LEFT) {

                pane.setLocale(Locale.UK);
            }

            JButton button;
            JButton buttonc;
            pane.setLayout(new GridBagLayout());
            GridBagConstraints c = new GridBagConstraints();
            if (shouldFill) {
                c.fill = GridBagConstraints.HORIZONTAL;

                pane.setLayout(new GridBagLayout());
                GridBagConstraints cc = new GridBagConstraints();
                if (shouldFill) {
                    cc.fill = GridBagConstraints.HORIZONTAL;

                }

                button = new JButton("Button 1");
                if (shouldWeightX) {
                    c.weightx = 0.5;
                }
                c.fill = GridBagConstraints.HORIZONTAL;
                c.gridx = 0;
                c.gridy = 0;
                pane.add(button, c);

                try {
                    Image i = Toolkit.getDefaultToolkit().getImage("red.JPEG");
                    Image resize = i.getScaledInstance(200, 180, java.awt.Image.SCALE_SMOOTH);
                    ImageIcon ic = new ImageIcon(resize);
                    button.setIcon(ic);

                    buttonc = new JButton("", ic);
                    cc.fill = GridBagConstraints.HORIZONTAL;
                    cc.ipady = 20;       //reset to default
                    cc.weightx = 0.0;   //request any extra vertical space
                    cc.gridx = 2;       //aligned with button 2
                    cc.gridwidth = 1;   //2 columns wide
                    cc.gridy = 2;       //third row
                    pane.add(button, ic);

                } catch (Exception e) {
                }

            }
        }

        private static void createAndShowGUI() {
            JFrame frame = new JFrame("GridBagLayoutDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            addComponentsToPane(frame.getContentPane());
            frame.pack();
            frame.setVisible(true);
        }

        public static void main(String[] args) {

            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
4

1 に答える 1

3

変数icは、try/catchブロックのスコープ内でのみ表示されます。変数の宣言をブロックの外に移動します

static更新されたコードについては、メソッドの使用を忘れてください。コードはクラスの特定のインスタンスに適用されるため、インスタンス メソッドである必要があります

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new NewClass().createAndShowGUI();
        }
    });
}
于 2013-12-30T00:34:48.263 に答える