- PR -

Splitpaneでの質問

投稿者投稿内容
KDS
常連さん
会議室デビュー日: 2005/07/15
投稿数: 38
投稿日時: 2005-07-15 05:05
Splitpaneで2つに画面を分割し、
左側にペイント機能
右側にJLabel,JTextField,JTextAreaの混合プログラム
というものを作っているのですが、
上手く行きません。
ネットで調べたりや本を読んでも良く分からないので、
ここで質問させて頂きました。

Splitpaneの簡単なプログラムと
ペイント機能のプログラムと
混合プログラムの3つは独立していると動くのですが、
3つを全てあわせようとすると上手く行きません。

ペイント
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.applet.Applet;

public class PaintMix extends JFrame implements ActionListener, ItemListener{

Image im;
Graphics myGrp;
int posX;
int posY;
int intRed,intGreen,intBlue;
JCheckBox ckbRed,ckbGreen,ckbBlue;
JButton myBtn;
JButton btnClear;

public PaintMix() {
Container ctnFoundation = getContentPane();
ctnFoundation.setLayout(new FlowLayout());
ckbRed=new JCheckBox("RED");
         ckbGreen=new JCheckBox("GREEN");
    ckbBlue=new JCheckBox("BLUE");
ctnFoundation.add(ckbRed);
ctnFoundation.add(ckbGreen);
ctnFoundation.add(ckbBlue);
ckbRed.addItemListener(this);
ckbGreen.addItemListener(this);
ckbBlue.addItemListener(this);
btnClear = new JButton("Clear");
ctnFoundation.add(btnClear);
btnClear.addActionListener(this);
setTitle("Paint");
setLocation(50,50);
setSize(600,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new MyWindowAdapter());
Toolkit tk = Toolkit.getDefaultToolkit();
im = tk.getImage("gazou.jpg");
}

public void paint(Graphics g) {
g.drawImage(im, 20, 70, this);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
posX = e.getX();
posY = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Graphics g=getGraphics();
Color color=new Color(intRed,intGreen,intBlue);
g.setColor(color);
posX = e.getX();
posY = e.getY();
g.fillRect(posX,posY,5,5);
}
});

myBtn = new JButton("クリア");
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
repaint();
}
});
}

public void itemStateChanged(ItemEvent e){
if(e.getItemSelectable()==ckbRed){
if(e.getStateChange()==1){
intRed=255;
}
else{
intRed=0;
}
}

if(e.getItemSelectable()==ckbGreen){
if(e.getStateChange()==1){
intGreen=255;
}
else{
intGreen=0;
}
}

if(e.getItemSelectable()==ckbBlue){
if(e.getStateChange()==1){
intBlue=255;
}
else{
intBlue=0;
}
}
}

class MyWindowAdapter extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}

public void actionPerformed(ActionEvent arg0){
if(arg0.getSource()==btnClear){
repaint();
}
}

public static void main(String args[]) {
PaintMix paintmix = new PaintMix();
paintmix.show();
}
}

混合プログラム

import java.lang.*;
import javax.swing.*;

public class SwingTextMix extends JFrame{
public JTextField fielda;
public JTextField fieldb;
public JTextField fieldc;

public JTextArea area;

public JLabel labela;
public JLabel labelb;
public JLabel labelc;
public JLabel labeld;

public SwingTextMix() {
super("SwingTextMix");
setLocation(50,50);
setSize(300,545);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(null);

labela = new JLabel("苗字");
labela.setLocation(10,10);
labela.setSize(100,25);
getContentPane().add(labela);

fielda = new JTextField();
fielda.setLocation(10,30);
fielda.setSize(150,25);
getContentPane().add(fielda);

labelb = new JLabel("ID");
labelb.setLocation(10,60);
labelb.setSize(100,25);
getContentPane().add(labelb);

fieldb = new JTextField();
fieldb.setLocation(10,80);
fieldb.setSize(150,25);
getContentPane().add(fieldb);

labelc = new JLabel("名前");
labelc.setLocation(10,110);
labelc.setSize(100,25);
getContentPane().add(labelc);

fieldc = new JTextField();
fieldc.setLocation(10,130);
fieldc.setSize(150,25);
getContentPane().add(fieldc);

labeld = new JLabel("コメント");
labeld.setLocation(10,160);
labeld.setSize(100,25);
getContentPane().add(labeld);

area = new JTextArea();
area.setLocation(10,180);
area.setSize(270,250);
area.setWrapStyleWord(true);
getContentPane().add(area);
}

public static void main(String args[]) {
SwingTextMix mainFrame = new SwingTextMix();
mainFrame.show();
}
}


3つの複合プログラム

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.applet.Applet;

public class PPT extends JFrame implements ActionListener, ItemListener{
public static void main(String[] args){
SplitTest test = new SplitTest();
test.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
test.setBounds( 10, 10, 800, 600);
test.setVisible(true);
}

PPT(){
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

final JPanel createPanel1 = new JPanel();
final JPanel createPanel2 = new JPanel();

splitPane.setDividerSize(5);
splitPane.setDividerLocation(0.5d);

Container content = this.getContentPane();
content.add(splitPane, BorderLayout.CENTER);
}
}
interface createPanel1{
public createPanel1(){
addWindowListener(new MyWindowAdapter());
Toolkit tk = Toolkit.getDefaultToolkit();
Image im = tk.getImage("gazou.jpg");
}

public void paint(Graphics g) {
g.drawImage(im, 20, 50, this);

Graphics myGrp = getGraphics();

addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int posX = e.getX();
int posY = e.getY();
}
});

addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
myGrp.drawLine(posX, posY, e.getX(), e.getY());
int posX = e.getX();
int posY = e.getY();
}
});

JButton myBtn = new JButton("クリア");
myBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
repaint();
}
});
}
}


class createPanel2{
JTextField fielda;
JTextField fieldb;
JTextField fieldc;

JTextArea area;

JLabel labela;
JLabel labelb;
JLabel labelc;
JLabel labeld;


public createPanel2(){
labela = new JLabel("苗字");
labela.setLocation(10,10);
labela.setSize(100,25);
getContentPane().add(labela);

fielda = new JTextField();
fielda.setLocation(10,30);
fielda.setSize(150,25);
getContentPane().add(fielda);

labelb = new JLabel("ID");
labelb.setLocation(10,60);
labelb.setSize(100,25);
getContentPane().add(labelb);

fieldb = new JTextField();
fieldb.setLocation(10,80);
fieldb.setSize(150,25);
getContentPane().add(fieldb);

labelc = new JLabel("名前");
labelc.setLocation(10,110);
labelc.setSize(100,25);
getContentPane().add(labelc);

fieldc = new JTextField();
fieldc.setLocation(10,130);
fieldc.setSize(150,25);
getContentPane().add(fieldc);

labeld = new JLabel("コメント");
labeld.setLocation(10,160);
labeld.setSize(100,25);
getContentPane().add(labeld);

area = new JTextArea();
area.setLocation(10,180);
area.setSize(270,250);
area.setWrapStyleWord(true);
getContentPane().add(area);
}
}


3つ目のプログラムは自分でいろいろいじっているので、
いまや手のつけられない状態になっています。。。

なにか少しのヒントでいいので教えてもらえませんでしょうか?

[ メッセージ編集済み 編集者: KDS 編集日時 2005-07-15 07:08 ]
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2005-07-15 08:50
KDSさん、こんにちは。

何がうまく行かないのですか?
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2005-07-15 10:18
@PPTのコンストラクタでJPanelを作っているがこれに実体がない
ASplitTest test = new SplitTest();とあるがこんなクラスがない。
BPPTのコンストラクタでJSplitPaneを作成してるがset***Component()などでコンポーネントが設定されていない。
CPPTのインターフェイス:createPanel1、クラス:createPanel2が、、、
と問題だらけです。

1つ1つ修正するとしたら、
Cはこんな部分は削除。
AはPPT test = new PPT();
@は変わりにPaintMixとSwingTextMixの親クラスをJPanelにしたものを割り当てる。
Bは
コード:
public PPT() {
   JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
   PaintMix      createPanel1 = new PaintMix();
   SwingTextMix  createPanel2 = new SwingTextMix();
   splitPane.setLeftComponent(createPanel1);
   splitPane.setRightComponent(createPanel2);
}


とこんな感じになるのかな?

KDS
常連さん
会議室デビュー日: 2005/07/15
投稿数: 38
投稿日時: 2005-07-15 19:31
>いっきゅうさん
詳しいご指摘ありがとうございます。
これから、いじってみる事にします。
本当にありがとうございます。

>Kissingerさん
私はまだまだ技術の無いものでして、
コンパイルすら上手く行かないし、
コンパイルできてもIllgalArgumentExceptionなどが出てきたり。。。

お二人とも私の為にレスを返して下さってありがとうございます。
KDS
常連さん
会議室デビュー日: 2005/07/15
投稿数: 38
投稿日時: 2005-07-16 00:01
いっきゅうさんにご指摘頂いた事を参考に今までいじっていたのですが、
なかなかコンパイルが出来なくて。。。

いっそのことPaintMixとSwingTextMixの中身を空にして見たのですが。。。

プログラム

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.*;
import java.applet.Applet;

public class PPT extends JFrame implements ActionListener, ItemListener{
public static void main(String[] args){
PPT test = new PPT();
test.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
test.setBounds( 10, 10, 800, 600);
test.setVisible(true);
}

public PPT() {
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
PaintMix createPanel1 = new PaintMix();
SwingTextMix createPanel2 = new SwingTextMix();
splitPane.setLeftComponent(createPanel1);
splitPane.setRightComponent(createPanel2);
}

public PaintMix(){
}
public SwingTextMix(){
}
}

エラーメッセージが出てしまいます。。

PPT.java:25: メソッドの宣言が不正です。戻り値の型が必要です。
public PaintMix(){
^
PPT.java:27: メソッドの宣言が不正です。戻り値の型が必要です。
public SwingTextMix(){
^
エラー 2 個

ここってどのように変えたらよいのでしょうか??
初歩的な質問なのかもしれませんが、
ネットなどで調べても出てこないので、
また質問させて頂きました。

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-16 00:17
http://www.google.co.jp/search?hl=ja&c2coff=1&rls=GGLD%2CGGLD%3A2004-32%2CGGLD%3Aja&q=java+%E5%85%A5%E9%96%80&lr=

この辺ででてくるページをじっくり読んで見ましょう。
正しい文法やJavaの概念がわかってからでも、遅くはないと思います。
先頭に出てくるページは新人の頃とても重宝していましたよ。
takashi
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 79
お住まい・勤務地: 東京
投稿日時: 2005-07-16 00:19
こんばんは。

えーと、

>PPT.java:27: メソッドの宣言が不正です。戻り値の型が必要です。

とあるように、メソッドには戻り値の型の宣言が必要です。
戻り値がないクラスと同じ名前のメソッドは、コンストラクタとして扱われます。
Javaのクラスの基礎となる部分ですので、がんばって入門書などを参考に
習得してくださいね^−^
KDS
常連さん
会議室デビュー日: 2005/07/15
投稿数: 38
投稿日時: 2005-07-16 02:00
>かつのりさん
>takashiさん

分かりました。
このサイトで勉強してみます。
7月中に仕上げないとダメなので、
勉強してちゃんと出来るように頑張ります。

スキルアップ/キャリアアップ(JOB@IT)