webForumDet fria alternativet

GUI: min bild syns knappt

1 svar · 408 visningar · startad av Inte-net

Inte-netMedlem sedan maj 20011 inlägg
#1

När jag skrivit koden nedan så startar jag mitt grafiska fönster. Koden skall visa en bild längst upp som e som en överskrift samt en textarea tillsammans med en bild i mitten. De delar 50/50 på fönstret. Längst ner återfinns en textfield där man skriver samt en skicka knapp... som en chat ungefär. Problemet är att bilden längst upp blir jätteliten, 10 px hög då den ska vara 10 ggr högre. Vad kan detta bero på?

Koden:

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

public class Grafik extends JFrame{
JTextArea text;

static Grafik control;

	public Grafik(){

		super("Slaget om Märsta - Version 1.0");

		CloseLyssnare cl=new CloseLyssnare();
		addWindowListener(cl);

      Image bild = Toolkit.getDefaultToolkit().getImage("minbild.gif");
      ImagePanel imgPane = new ImagePanel(bild);

      Image logo = Toolkit.getDefaultToolkit().getImage("logo.gif");
      ImagePanel imgLogo = new ImagePanel(logo);

getContentPane().setLayout(new BorderLayout());

JTextField field=new JTextField();
JButton dobutton=new JButton("Action");
dobutton.addActionListener(cl);
text=new JTextArea();
text.setEditable(false);

JPanel pane;
pane = new JPanel();
pane.setLayout(new GridLayout(1, 2));
pane.add(text);
pane.add(imgPane);

getContentPane().add(pane, BorderLayout.CENTER);

pane = new JPanel();
pane.setLayout(new GridLayout(1,2));
pane.add(field);
pane.add(dobutton);

getContentPane().add(pane, BorderLayout.SOUTH);

pane = new JPanel();
pane.setLayout(new GridLayout(1,1));
pane.add(imgLogo);

getContentPane().add(pane, BorderLayout.NORTH);

setBackground(Color.black);
setSize(800, 600);
show();
setVisible(true);

}

public static void main(String[] argv){
control=new Grafik();
control.run();

}

public void run() {

	text.append("TEXTER!");

}

}

class CloseLyssnare extends WindowAdapter implements ActionListener{

public void actionPerformed(ActionEvent ae){
	System.exit(0);

}

public void windowClosing(WindowEvent we){

	System.exit(0);

}

}

class ImagePanel extends JPanel {
Image image;

public ImagePanel(Image image) {
	this.image = image;
}

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	g.drawImage(image, 0, 0, this);
}

}

------------------
--> *äää* <--

spangoMedlem sedan juni 20006 147 inlägg
#2

Ääh... varför göra en massa trams själv, när du kan använda en JLabel?

public class Grafik extends JPanel{
	private JLabel rubrikLbl;
	private JTextArea text;
	// ev. andra deklarationer...

	public Grafik(){
		super("Slaget om Märsta - v/1.0");
		Icon bilden = new ImageIcon("rubrik.png");
		rubrikLbl = new JLabel(bilden);
	// etc
	}
}

------------------
These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, tomorrow is harvest day and to them it is the holocaust.

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb