04. december 2004 - 16:33
Der er
17 kommentarer og 1 løsning
problemer med JScrollPane
synes implementeringen ser fin ud, men ingen scrollbar import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame { JTextArea console; public Main(){ JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Flight System v1.2"); frame.setSize(700, 500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); PanelMenu m = new PanelMenu(frame); CreateLayout c = new CreateLayout(); ReserveLayout r = new ReserveLayout(); Container content = frame.getContentPane(); JTabbedPane pane = new JTabbedPane(); pane.add("Create", c.center); pane.add("Reserve", r.center); JPanel bottom = new JPanel(); console = new JTextArea(); console.setPreferredSize(new Dimension(500,80)); console.setEditable(false); console.setLineWrap(true); console.setWrapStyleWord(true); console.append(msg); bottom.add(new JScrollPane(console)); content.add(pane, BorderLayout.CENTER); content.add(bottom, BorderLayout.SOUTH); frame.setVisible(true); }
Annonceindlæg fra Kingston Technology
04. december 2004 - 16:40
#1
Der kommer først en scrollbar når indholdet af boksen bliver mere end der kan vises - du kan også sætte scrollpane til altid at vise scrollbaren... jScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jScrollPane.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
04. december 2004 - 16:42
#2
kører en test hvor der bliver skrevet 50 linier - og der kommer desværre ingen scrollbar
04. december 2004 - 16:49
#3
DINTSCROLLPANE.setBounds(new Rectangle(50, 35, 275, 210)); prøv at sætte størrelsen på den
04. december 2004 - 16:50
#4
hmm.. det har du gjort dog ikke på samme måde som mig
04. december 2004 - 16:51
#5
nej du har ikke hehe.. jeg bliver helt væk her!
04. december 2004 - 16:56
#6
kalp - er lidt i gang med din ide .. og det er jo selvfølgelig rigtigt at de er scrollpane't der skal sættes og ikke textArea
04. december 2004 - 16:57
#7
JPanel bottom = new JPanel(); console = new JTextArea(); //console.setPreferredSize(new Dimension(500,80)); console.setEditable(false); console.setLineWrap(true); console.setWrapStyleWord(true); console.append(msg); JScrollPane scroll = new JScrollPane(console); scroll.setPreferredSize(new Dimension(500,80)); bottom.add(scroll); // add components to Container content.add(pane, BorderLayout.CENTER); content.add(bottom, BorderLayout.SOUTH); // show the frame frame.setVisible(true); }
04. december 2004 - 16:59
#8
men lige et bonus spørgsmål - dette textArea fungere som en consol for alle eksekverede kommandoer hentet andet steds fra. Hvis programmet kører i tid nok vil antallet af "appends" i textArea'et blive ret stort.. kan man smide nogle ud igen ? - en slags simpel bufffering ?
04. december 2004 - 17:00
#9
det burde virker ellers prøv at smide dette ind i din konstuktør scroll.setVisible(true);
04. december 2004 - 17:01
#10
kalp - det virker. Det var bare dimensionerne på scroll og ikke text der skal sættes
04. december 2004 - 17:05
#11
har ikke rigtig rodet så meget med det du spørger til, men du tænker på noget lignende at de første append's i din console skal slettes automatisk når din console når et bestemt antal linier?
04. december 2004 - 17:09
#12
præcist ..
04. december 2004 - 17:16
#13
to sekunder... indstallere lige sp2(ja desværre hehe) og så kigger jeg lige på det.. kunne tænkes du skal tælle hvor mange rækker du har i din console og så slette en de første appends når du når et bestemet antal rækker.
04. december 2004 - 17:22
#14
Deal - de 15 points er hjemme, men går offline nu til imorgen - julefrokoster - men smid et svar og evt en ide til console-tingen >>Rapstam
05. december 2004 - 14:48
#15
Her har du et eksempel... det her er main... package mypackage2; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.UIManager; import java.awt.Dimension; import java.awt.Toolkit; public class editboxe { public editboxe() { Frame frame = new start(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); } /** * * @param args */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new editboxe(); } } det her er framen package mypackage2; import java.util.StringTokenizer; import javax.swing.JFrame; import java.awt.Dimension; import javax.swing.JButton; import java.awt.Rectangle; import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JScrollPane; import javax.swing.JTextArea; import java.awt.event.MouseMotionListener; import java.awt.event.MouseEvent; public class start extends JFrame { private int counter = 0; private JTextArea jTextArea1 = new JTextArea(); private JButton jButton1 = new JButton(); private JTextField jTextField1 = new JTextField(); public start() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(null); this.setSize(new Dimension(400, 300)); jTextArea1.setBounds(new Rectangle(15, 5, 370, 210)); jButton1.setText("jButton1"); jButton1.setBounds(new Rectangle(40, 230, 75, 23)); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); jTextField1.setBounds(new Rectangle(120, 230, 245, 20)); this.getContentPane().add(jTextField1, null); this.getContentPane().add(jButton1, null); this.getContentPane().add(jTextArea1, null); } private void jButton1_actionPerformed(ActionEvent e) { jTextArea1.append(jTextField1.getText() + "\n"); counter++; if(counter == 100 || counter > 100) { String tmp = jTextArea1.getText(); StringTokenizer newfile = new StringTokenizer(tmp, "\n"); String tmp2 = ""; newfile.nextToken(); while(newfile.hasMoreTokens()) { tmp2 += newfile.nextToken() + "\n"; jTextArea1.setText(tmp2); } } } } skriv i noget tekst.. tryk på knappen... gør det 100 gange hehe og så sletter den den første linie og for hver gang du skriver en ny linie bliver den første slettet... håber det kan bruges..! det kan tilpasses så den sletter flere linier afhængig af hvor meget en dine appends fylder..
05. december 2004 - 14:49
#16
undskyld forsinkelsen.. men min pc skulle have den helt store omgang... sp2, fjerne spyware og virus hehe nu er den da ren igen og jeg kan arbejde i fred;)
05. december 2004 - 14:51
#17
Jeg takker :)
05. december 2004 - 14:53
#18
Ingen årsag du må lige spørge hvis du får problemer overføre ideen til din egen kode: )
Kurser inden for grundlæggende programmering