Hvorfor benytter du dig ikke af et TextArea og et JScrollPane til den funktionalitet.
- JTextarea console = new JTextArea();
-
- JScrollPane scroll = new JScrollPane(console);
-
- panel.add(scroll,BorderLayout.CENTER);
Det her er utestet kode, og bare for at give dig en idé omkring, hvad du kan gøre
Det virker, dog ikke uden fejl.
1) Hvordan gør jeg det "writing secure", så brugeren ikke kan skrive derinde?
2) Mit input felt som ligger under output feltet virker ikke..
Koden ser nu sådan ud
- import java.awt.BorderLayout;
- import java.awt.Color;
- import javax.swing.*;
-
- public class Window extends JFrame
- {
- Keyboard keys;
-
- JPanel panel;
- JLabel input;
- JTextArea output;
- JScrollPane scroll;
- String command = "";
- String outputString = ">>> Welcome to DotMS! \ntest";
-
- public Window()
- {
- this.setVisible(true);
- this.setDefaultCloseOperation(EXIT_ON_CLOSE);
- this.setSize(600, 400);
-
- keys = new Keyboard(this);
- this.setFocusable(true);
- this.addKeyListener(keys);
-
- panel = new JPanel();
- this.add(panel);
- panel.setLayout(null);
- panel.setOpaque(true);
- panel.setBackground(Color.BLACK);
-
- output = new JTextArea();
- output.setForeground(Color.WHITE);
- output.setBackground(Color.BLACK);
- //output.setBounds(0, 0, 600, 300);
- output.setText(outputString);
- //panel.add(output);
-
- scroll = new JScrollPane(output);
- //scroll.setBackground(Color.BLACK);
- scroll.setBounds(0, 0, 600, 300);
- panel.add(scroll);
-
- input = new JLabel();
- input.setForeground(Color.WHITE);
- input.setBounds(0, 200, 600, 50);
- input.setText("> " + command);
- panel.add(input);
- }
-
- public void refreshOutput()
- {
- output.setText(">>> " + outputString.toUpperCase());
- }
-
- public void refreshInput()
- {
- input.setText("> " + command);
- }
-
- public static void main(String args[])
- {
- Window main = new Window();
- }
- }
EDIT:
Har fået det til at virke mere eller mindre nu
- import java.awt.BorderLayout;
- import java.awt.Color;
- import javax.swing.*;
-
- public class Window extends JFrame
- {
- Keyboard keys;
-
- JPanel panel;
- //JLabel input;
- JLabel input;
- JTextArea output;
- JScrollPane scroll;
- String command = "";
- String outputString = ">>> Welcome to DotMS! \ntest";
-
- public Window()
- {
- this.setVisible(true);
- this.setDefaultCloseOperation(EXIT_ON_CLOSE);
- this.setSize(600, 400);
-
- keys = new Keyboard(this);
- this.setFocusable(true);
- this.addKeyListener(keys);
-
- panel = new JPanel();
- this.add(panel);
- panel.setLayout(null);
- panel.setOpaque(true);
- panel.setBackground(Color.BLACK);
-
- output = new JTextArea();
- output.setForeground(Color.WHITE);
- output.setBackground(Color.BLACK);
- // output.setBounds(0, 0, 600, 300);
- output.setText(outputString);
- //panel.add(output);
-
- scroll = new JScrollPane(output);
- //scroll.setBackground(Color.BLACK);
- scroll.setBounds(0, 0, 600, 300);
- panel.add(scroll);
-
- input = new JLabel();
- input.setForeground(Color.WHITE);
- input.setBounds(0, 310, 600, 50);
- input.setText("> " + command);
- panel.add(input);
- }
-
- public void refreshOutput()
- {
- output.setText(">>> " + outputString.toUpperCase());
- }
-
- public void refreshInput()
- {
- input.setText("> " + command);
- }
-
- public static void main(String args[])
- {
- Window main = new Window();
- }
- }
Mit problem er bare:
1) Får intet output, før jeg skriver noget
2) Hvis jeg trykker på skærmen, begynder jeg at skrive til output og ikke input.
Indlæg senest redigeret d. 14.12.2012 15:51 af Bruger #16945