Note that there are some explanatory texts on larger screens.

plurals
  1. POhow do I add a jtextfield over a disabled scroll pane with text in it?
    primarykey
    data
    text
    <p>most of my code is working. I only need to create a very small config dialog (to input some text as a path for this app. (A log file monitor)</p> <p>Its almost there, the textfield appears over the jscrollpane (giving a nice effect).But I am unable to enter any text into the textField. And I cant figure it out.</p> <p>Please help.</p> <pre><code>package vlive; /* vTABLET - a Virtual Desktop Tablet. http://www.splashportal.net Copyright (C) 2012 Aubrey Bourke. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;. Contact: (Author) Aubrey Bourke - aubrey@splashportal.net */ import java.awt.*; import java.awt.event.*; import java.awt.geom.RoundRectangle2D; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.swing.*; import javax.imageio.ImageIO; import javax.swing.JWindow; import java.awt.image.*; import sun.audio.*; //import the sun.audio package import java.io.*; import java.util.Timer; import java.util.*; import javax.swing.border.Border; import javax.swing.text.DefaultCaret; import javax.swing.text.Document; import javax.swing.text.html.HTMLEditorKit; import javax.swing.text.html.StyleSheet; class vLive extends JPanel implements MouseListener, MouseMotionListener{ Point location; MouseEvent pressed; File file; static vLive vlc; //static vTablet vlive; //vLiveConsole var's Shape shape; Dimension arcSize; BufferedImage splash, logo; JWindow vLiveConsoleWindow; Float transparency = 0.00f; Boolean isGreenLine=false; int line; Boolean isSplash = true; static Boolean isLiveLog = false; boolean isConfig; JTextField input; JTextPane textPane; HTMLEditorKit htmlEditorKit; BufferedReader daLog; String LogString; Document document; JScrollPane scrollPane; String osVersion; String status; //CONSTRUCTOR //@SuppressWarnings("restriction") public vLive(){ Tray(); //create the vTablet OSD Dimension arcSize = new Dimension(16, 16); shape = new RoundRectangle2D.Double(0d, 0d, 670, 199, arcSize.width, arcSize.height); vLiveConsoleWindow = new JWindow(); setSize(650, 199); loadImages(); roundTheFrame(); //add this JPanel (LiveLog) vLiveConsoleWindow.add(this); vLiveConsoleWindow.addMouseListener(this); vLiveConsoleWindow.addMouseMotionListener(this); vLiveConsoleWindow.setSize(670, 199); //vLiveConsoleWindow.setLocation(10, 10); vLiveConsoleWindow.setLocationRelativeTo(null); vLiveConsoleWindow.setVisible(true); //start a chain call! fadein(); //1. fadein -&gt; jetstart -&gt; greenbar try{ //keep logo visible after greenbar disappears Thread.sleep(4000); isSplash=false; isLiveLog=true; repaint(); String os_version = System.getProperty("os.name").toLowerCase(); osVersion = os_version; System.out.println("[System: "+os_version.toUpperCase()+"]"); if(os_version.startsWith("win")){ file = new File("C:/Windows/WindowsUpdate.log"); status=file.toString(); } if(os_version.startsWith("linux")) { file = new File("/var/log/messages"); status = file.toString(); if(!file.exists()) file = new File("/var/log/syslog"); status = file.toString(); } //start Log Monitor TimerTask task = new FileWatcher( new File(file.getAbsolutePath()) ) { protected void onChange( File file ) { // here we code the action on a change //System.out.println( "File "+ file.getName() +" have changed !" ); isLiveLog=true; updateLog(); } }; java.util.Timer timer = new Timer(); // repeat the check every second timer.schedule( task , new Date(), 1000 ); //load the Log to use //daLog = new File("/var/log/syslog"); //add a textpane to JWindow textPane = new JTextPane(); textPane.addMouseListener(this); textPane.addMouseMotionListener(this); scrollPane = new JScrollPane(textPane, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //DefaultCaret caret = (DefaultCaret)textPane.getCaret(); //caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); textPane.setEditable(false); textPane.setOpaque(false); scrollPane.setOpaque(false); scrollPane.getViewport().setOpaque(false); htmlEditorKit = new HTMLEditorKit(); textPane.setEditorKit(htmlEditorKit); // add some styles to the html StyleSheet styleSheet = htmlEditorKit.getStyleSheet(); styleSheet.addRule("body {font: italic bold 6px Sans;}"); styleSheet.addRule("body {color:#585858;}"); textPane.setContentType("text/html"); textPane.setSize(630, 165); scrollPane.setSize(631, 165); scrollPane.setVisible(true); this.setLayout(null); this.add(scrollPane); this.scrollPane.setLocation(20, 15); //textPane.setLocation(0, 0); revalidate(); //textPane.setText("Hello there\n anybody see this text??\n"); updateLog(); }catch(InterruptedException e){System.out.println(e);} } public void roundTheFrame(){ try{ vLiveConsoleWindow.addComponentListener(new ComponentAdapter() { @SuppressWarnings("restriction") @Override public void componentResized(ComponentEvent e){ com.sun.awt.AWTUtilities.setWindowShape(vLiveConsoleWindow, shape); }}); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public synchronized void updateLog(){ //print the log Runnable updateAComponent = new Runnable() { public void run() { if(isLiveLog){ isLiveLog=false; System.out.println("[Log Update Event]".toUpperCase()); try { document = textPane.getDocument(); /* StyleSheet styleSheet = htmlEditorKit.getStyleSheet(); styleSheet.addRule("body {font: italic bold 6px Sans;}"); styleSheet.addRule("body {color:#585858;}"); textPane.setContentType("text/html"); */ daLog = new BufferedReader(new FileReader(file)); try{ String line = null; //not declared within while loop LogString = new String(); while (( line = daLog.readLine()) != null){ document.insertString(document.getLength(),line+"\n",null); //LogString+=line+"\n"; } }finally { daLog.close();} }catch(Exception e){System.out.println(e);} //System.out.println(LogString); textPane.select(textPane.getDocument().getLength(), textPane.getDocument().getLength()); revalidate(); //textPane.setLocation(0, 0); } } }; SwingUtilities.invokeLater(updateAComponent); } public void loadImages(){ try { String filename = "/images/vLive-Console-Logo.png"; InputStream is = vLive.class.getResourceAsStream(filename); logo = ImageIO.read(is); }catch (IOException e) { System.out.println("[Image load error]"); } try { String filename = "/images/vLive-Console.png"; InputStream is = vLive.class.getResourceAsStream(filename); splash = ImageIO.read(is); }catch (IOException e) { System.out.println("[Image load error]"); } } @SuppressWarnings("restriction") public void sfx(){ try { InputStream in; //in = new FileInputStream("jetstart2.wav"); in = vLive.class.getResourceAsStream("/sounds/jetstart2.wav"); // Create an AudioStream object from the input stream. @SuppressWarnings("restriction") AudioStream as = new AudioStream(in); // Use the static class member "player" from class AudioPlayer to play // clip. AudioPlayer.player.start(as); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void fadein(){ //chain 1 -&gt; fade in while (transparency&lt;0.9999955f){ transparency +=0.000005f; //System.out.println(transparency); repaint(); } transparency=1.0f; repaint(); //chain 2 -&gt; jetstart2.wav sfx(); //chain 3 -&gt; green barrr try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } greenline(); } public void greenline(){ //line=80; line=30; isGreenLine = true; while(line&lt;380){ line++; repaint(); try{ Thread.sleep(4); }catch(InterruptedException e){System.out.println(e);}} try{ Thread.sleep(2050); }catch(InterruptedException e){System.out.println(e);} isGreenLine=false; repaint(); } public void fadeout(){ //fade out while (transparency&gt;0.01){ transparency -=0.000007f; System.out.println(transparency); repaint(); } } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; // Enable antialiasing for text g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.drawImage(splash, 0, 0, null); if(isSplash){ Composite comp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, transparency); g2d.setComposite(comp); g2d.drawImage(logo, null, 0, 1); if(isGreenLine){ g2d.setColor(Color.GREEN); //g2d.setColor(new Color(0x1e, 0x90, 0xff)); g2d.setStroke(new BasicStroke(7)); g2d.drawLine(30, 158, line, 158); g2d.setStroke(new BasicStroke(1)); g2d.setColor(Color.BLACK); g2d.drawRect(26,154, line-22, 7); /*g2d.setStroke(new BasicStroke(7)); g2d.drawLine(80, 125, line, 125); g2d.setStroke(new BasicStroke(1)); g2d.setColor(Color.BLACK); g2d.drawRect(76,121, line-72, 7);*/ } } if(isLiveLog){ //System.out.println("isLiveLog - Empty Paint() block!"); Font tmp = new Font("Sans", Font.ITALIC+Font.BOLD, 10); g2d.setFont(tmp); g2d.setColor(Color.GRAY.darker()); g2d.drawString("SYSTEM: "+osVersion.toUpperCase(), 30, 145); g2d.drawString("LOGFILE: "+status.toUpperCase(), 30, 156); g2d.drawString("INITIALIZING LIVE LOG-REPORTING...", 30, 167); } if(isConfig){ System.out.println("[Repaint..."); } } public void mouseMoved(MouseEvent e) { } public void mouseDragged(MouseEvent e) { location = vLiveConsoleWindow.getLocation(location); int x = location.x - pressed.getX() + e.getX(); int y = location.y - pressed.getY() + e.getY(); vLiveConsoleWindow.setLocation(x, y); } public void mouseClicked(MouseEvent e) { if(e.getButton()==3){ System.out.println("[CONFIG]"); isConfig=true; JPanel p2 = new JPanel(); p2.setBackground(Color.GRAY); p2.setSize(300,20); input = new JTextField(40); input.setOpaque(false); input.setSize(300, 20); input.setForeground(Color.WHITE); input.setLocation(0, 0); p2.add(input); //Maybe add a POPUP instead!!!! vLiveConsoleWindow.add(p2); p2.setLocation(40, 150); input.requestFocusInWindow(); System.out.println(input.isEditable() + " " +input.isEnabled()); input.setText("your path.."); input.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String tex = input.getText(); System.out.println(tex); } }); } } public void mouseEntered(MouseEvent e) { //search.requestFocus(); } public void mouseExited(MouseEvent e) { //search.requestFocus(); } public void mousePressed(MouseEvent e) { if(e.getButton()==1) pressed = e; } public void mouseReleased(MouseEvent e) { } public void Tray(){ System.out.println("[ACTIVATING TRAY ICON]"); Image kimage=null; final TrayIcon trayIcon; if (SystemTray.isSupported()) { System.out.println("[SYSTEM TRAY SUPPORTED!]"); try { String filename = "/images/vLive.png"; InputStream is = vLive.class.getResourceAsStream(filename); kimage = ImageIO.read(is); }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } SystemTray tray = SystemTray.getSystemTray(); //timage = Toolkit.getDefaultToolkit().getImage("res/CrossOfLife.png"); MouseListener mouseListener = new MouseListener() { public void mouseClicked(MouseEvent e) { //System.out.println("Tray Icon - Mouse clicked!"); } public void mouseEntered(MouseEvent e) { //System.out.println("Tray Icon - Mouse entered!"); } public void mouseExited(MouseEvent e) { //System.out.println("Tray Icon - Mouse exited!"); } public void mousePressed(MouseEvent e) { //System.out.println("Tray Icon - Mouse pressed!"); } public void mouseReleased(MouseEvent e) { //System.out.println("Tray Icon - Mouse released!"); } }; ActionListener exitListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("[Saving vTablet Screen Co-ordinates]".toUpperCase()); try{ FileWriter fw = new FileWriter("Config"); BufferedWriter bw = new BufferedWriter(fw); int vx = vLiveConsoleWindow.getX(); int vy = vLiveConsoleWindow.getY(); bw.write(vx+"\n"); bw.write(vy+"\n"); bw.flush(); fw.close(); }catch(IOException eyecaptain){System.out.println("[Co-ordinate save error: "+eyecaptain+"]".toUpperCase());} System.out.println("[Exiting...]".toUpperCase()); System.out.println(""); System.exit(0); } }; ItemListener cbListener = new ItemListener() { public void itemStateChanged(ItemEvent e) { Object source = e.getItemSelectable(); System.out.println(source); if (e.getItem().equals("vTablet-OSD")) System.out.println("Chek...."); if (e.getStateChange() == ItemEvent.SELECTED){ } if (e.getStateChange() == ItemEvent.DESELECTED){ } } }; PopupMenu popup = new PopupMenu(); // Create a pop-up menu components MenuItem aboutItem = new MenuItem("About"); CheckboxMenuItem cb1 = new CheckboxMenuItem("vTablet-OSD"); cb1.setActionCommand("vTablet-OSD"); cb1.addItemListener(cbListener); CheckboxMenuItem cb2 = new CheckboxMenuItem("VTab"); CheckboxMenuItem cb3 = new CheckboxMenuItem("vTablet"); Menu displayMenu = new Menu("Configuration"); MenuItem errorItem = new MenuItem("Error"); MenuItem warningItem = new MenuItem("Warning"); MenuItem infoItem = new MenuItem("Info"); MenuItem noneItem = new MenuItem("None"); MenuItem exitItem = new MenuItem("Exit"); //Add components to pop-up menu popup.add(aboutItem); popup.addSeparator(); popup.add(cb1); popup.add(cb2); popup.add(cb3); popup.addSeparator(); popup.add(displayMenu); displayMenu.add(errorItem); displayMenu.add(warningItem); displayMenu.add(infoItem); displayMenu.add(noneItem); // popup.add(exitItem); MenuItem defaultItem = new MenuItem("Exit"); defaultItem.addActionListener(exitListener); popup.add(defaultItem); Font font3=new Font("Monospace", Font.ITALIC, 14); popup.setFont(font3); trayIcon = new TrayIcon(kimage, "vLive", popup); ActionListener actionListenerA = new ActionListener() { public void actionPerformed(ActionEvent e) { trayIcon.displayMessage("Action Event", "An Unimplemented Action Event Has Been Performed!", TrayIcon.MessageType.INFO); if(e.getActionCommand().equals("vTablet-OSD")) {System.out.println("[OSD Toggle!]".toUpperCase());} } }; trayIcon.setImageAutoSize(true); popup.addActionListener(actionListenerA); trayIcon.addMouseListener(mouseListener); try { System.out.println("Tray Disabled"); } catch (Exception e) { System.err.println("[TrayIcon could not be added.]".toUpperCase()); } } else { System.out.println("[Tray not supported!]".toUpperCase()); } } public static void main(String[] args){ System.out.println("======================================"); System.out.println("vLive Log-Report Console".toUpperCase()); System.out.println("[Created by Aubrey Bourke]"); System.out.println("[WEB: http://www.splashportal.net]".toUpperCase()); System.out.println("======================================"); Thread t = new Thread( new Runnable(){ public void run() { vlc = new vLive(); //vTablet OSD } }); t.start(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload