0

私はいくつかの提案を取り入れ、提案を実装して読みやすくするためにコードの一部を書き直しました。今はコンパイルされません。コンパイラは、JLabel のコンストラクタを解決できないと不平を言っています。問題があるところにコメントしました。

/**
 * Created with IntelliJ IDEA.
 * User: goulartj
 * Date: 9/4/13
 * Time: 10:11 AM
 * To change this template use File | Settings | File Templates.
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class NewSwing implements ActionListener{

    JFrame frame;
    JTextField textField;
    JTextArea textArea;
    JPanel panel;
    Image image;
    JLabel label;
    private final static String newline = "\n";

    public static void main(String[] args) {
        NewSwing gui = new NewSwing();
        gui.go();
    }

    public void go(){

        frame = new JFrame();
        frame.getContentPane().setSize(300, 300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        textField = new JTextField("This is a text field and these are my texticles!");
        textField.selectAll();
        textArea = new JTextArea();
        panel = new JPanel();
        image = new ImageIcon("cuteKitten.jpg").getImage();
        label = new JLabel(image); //COMPILER COMPLAINS HERE
        panel.add(label);


        frame.getContentPane().add(BorderLayout.NORTH, textField);
        frame.getContentPane().add(BorderLayout.CENTER, textArea);
        frame.getContentPane().add(BorderLayout.EAST, panel);
        panel.setBackground(Color.CYAN);




        textField.addActionListener(this);

    }

    public void actionPerformed(ActionEvent event){
        String text = textField.getText();
        textArea.append(text + newline);
        textField.selectAll();
    }

   /* class MyDrawPanel extends JPanel {
        public void paintComponent(Graphics g) {
            g.drawImage(image, 3, 4, this);
        }
    }     */
}

すべての助けを前もってありがとう!あなたはいつも私をとてもよくしてくれます!

4

2 に答える 2

1

画像を表示するためにカスタム ペイントを行うのはなぜですか???

問題は、(メソッドをオーバーライドしなかったためgetPreferredSize()) コンポーネントに適切なサイズがないため、ペイントするものが何もないことです。

JLabel と Icon を使用するだけです。アイコンをペイントして適切なサイズを決定した後、それを見ていきます。車輪を再発明しないでください。JLabel API を読むと、詳細についてラベルの使用方法に関する Swing チュートリアルへのリンクが見つかります。

もちろん、画像を読んでいることも確認する必要があります。System.out.println(...) を追加するだけで、アイコンが適切に作成されるようにするのは簡単です。

于 2013-09-04T18:29:14.967 に答える
0

表示されていますが、画面の端にあります。変更するだけです:

frame.getContentPane().add(BorderLayout.EAST, panel);

frame.getContentPane().add(BorderLayout.CENTER, panel);

中央のパネルに正しく表示されるはずです。

于 2013-09-04T16:09:00.033 に答える