webForumDet fria alternativet

Menyn hamnar underst...

2 svar · 520 visningar · startad av SprayMaphia

SprayMaphiaMedlem sedan jan. 2004128 inlägg
#1

Jag sitter och försöker göra något program utan någon direkt bakgrund eller användningsområde för det, men av någon jäkla anledning så hamnar min JMenuBar under min TextArea. Här är min kod:

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

public class Mainprg {
	
	public static void main(String args[]) {
		
		// ---------------------
		
		JMenuBar menuBar = new JMenuBar();
		
		// ---------------------
		
		JMenu mFile = new JMenu("File");
		
		// ---------------------
		
		JMenuItem mFileNew = new JMenuItem("New");
		mFileNew.setToolTipText("Creates a new, empty file.");
		
		// ---------------------
		
		mFile.add(mFileNew);
		
		// ---------------------
		
		menuBar.add(mFile);
		
		// ---------------------
		
		TextArea ta = new TextArea("", 10, 10, TextArea.SCROLLBARS_BOTH);
		
		// ---------------------
		
		JFrame mainFrame = new JFrame("X-Pad - BETA");
		
		// ---------------------
		
		Container pane = mainFrame.getContentPane();
		pane.setLayout(new GridLayout(1,1));
		pane.add(ta);
		
		// ---------------------
		
		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainFrame.setSize(640, 480);
		
		// ---------------------
		
		mainFrame.setJMenuBar(menuBar);
		mainFrame.setVisible(true);
		
		// ---------------------
		
	}
	
}

Någon som vet vad man kan göra åt det?

LimeMedlem sedan sep. 2001961 inlägg
#2

Hehe... Klassiker.

Problemet ligger i att du mixar AWT och SWING-komponenter och de lirar inte så jättebra ihop. Med SWING så finns det en inbyggd Z-hierarki, alltså i vilken ordning saker skall visas. Där ligger JMenuBar i det lager som brukar kallas Modala lagret. Ordningen på lagrena är Default, Palette, Modal, Popup och Drag räknat nerifrån och upp. I AWT så måste man sätta Z-ordningen själv men SWING så sköts det för det mesta automatiskt.

Däremot funkar det inte att blanda de två komponenttyperna med varandra.

Om du ändrar TextArea till JTextArea så funkar det. Dock måste du då sätta din JTextArea i en JScrollPane för att få till skrollningen.

såhär:

		// ---------------------
		
		JTextArea ta = new JTextArea(10, 10);
    
        //Put the text area in a scroll pane.
        JScrollPane taScrollPane = new JScrollPane(ta);
        taScrollPane.setVerticalScrollBarPolicy(
                JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        taScrollPane.setHorizontalScrollBarPolicy(
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        taScrollPane.setMinimumSize(new Dimension(100, 100));

		
		// ---------------------
        mainFrame.setContentPane(taScrollPane);
SprayMaphiaMedlem sedan jan. 2004128 inlägg
#3

Tackar och bockar. =)

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)