Toon posts:

java swing_Statusbar.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet iemand misschien hoe ik een statusbar in mijn window krijg??. Het window heb ik met Swing gemaakt.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

het is een jwindow neem ik aan?

dan doe je setLayout(new BorderLayout());
je maakt een nieuwe statusbalk aan
JStatusBar mijnBalk= new JStatusBar();

en dan add je die aan je jwindow met constraints op South
this.getContentPane("South", mijnBalk);

(uit mijn hoofd, dus weet het niet zeker)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Status bar die ik oa gebruik voor cursor positie.. maar die rommel kun je er wel uitslopen. Sun heeft niet standaard een statusbar, en je moet hem toevoegen op de manier van wasigh.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2001
 * Company:
 * @author Peter Veentjer
 * @version 1.0
 */

package com.jph.expertSysteem.editor;

import java.awt.*;
import com.borland.jbcl.layout.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class StatusBar extends JPanel implements CaretListener
{
    //static
    
    BorderLayout borderLayout1 = new BorderLayout();
    JLabel jLabel1 = new JLabel();
    JPanel jPanel1 = new JPanel();
    Border border1;
    XYLayout xYLayout1 = new XYLayout();
    JLabel positionLabel = new JLabel();
    JLabel jLabel3 = new JLabel();
    Border border2;
    
    public StatusBar() {
        try {
            jbInit();
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }
    
    void jbInit() throws Exception {
        border1 = BorderFactory.createEmptyBorder(0,0,0,0);
        border2 = BorderFactory.createCompoundBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(103, 101, 98),new Color(148, 145, 140)),BorderFactory.createEmptyBorder(1,1,1,1));
        jLabel1.setPreferredSize(new Dimension(100, 22));
        jLabel1.setText("ExpertSystem Copyright ©  RuG");
        this.setLayout(borderLayout1);
        jPanel1.setLayout(xYLayout1);
        this.setBorder(border1);
        positionLabel.setBorder(border2);
        positionLabel.setHorizontalAlignment(JLabel.CENTER);
        jLabel3.setBorder(border2);
        jPanel1.setMinimumSize(new Dimension(300, 24));
        jPanel1.setPreferredSize(new Dimension(300, 24));
        this.add(jLabel1, BorderLayout.CENTER);
        this.add(jPanel1, BorderLayout.EAST);
        jPanel1.add(jLabel3, new XYConstraints(0, 2, 100, 22));
        jPanel1.add(positionLabel, new XYConstraints(105, 2, 195, 22));
    }
    
    /**
     * Haalt het aantal regels op in een document.
     */
    private int getLineCount(Document document)
    {
        return document.getDefaultRootElement().getElementCount();
    }
    
    /**
     * Haalt de line op basis van een offsewt.
     */
    private int getLineOfOffset(Document document,int offset)
    {
        return document.getDefaultRootElement().getElementIndex(offset);
    }
    
    /**
     * Returns the start offset of the specified line.
     * @param line The line
     * @return The start offset of the specified line, or -1 if the line is
     * invalid
     */
    public int getLineStartOffset(Document document, int line)
    {
        Element lineElement = document.getDefaultRootElement().getElement(line);
        if(lineElement == null)
            return -1;
        else
            return lineElement.getStartOffset();
    }
    
    
    public void caretUpdate(CaretEvent e)
    {
        int dot =        e.getDot();
        Document document = ((JTextComponent)e.getSource()).getDocument();
        int numLines =   getLineCount(document);
        int currLine =   getLineOfOffset(document,dot);
        int start =  getLineStartOffset(document,currLine);
        positionLabel.setText("Line: "+(currLine+1)+"/"+numLines+" Column: "+ (dot-start+1));
    }
}