[java] JTree resizen.

Pagina: 1
Acties:

  • Balachmar
  • Registratie: Mei 2002
  • Laatst online: 21-03 16:52

Balachmar

The truth is out there

Topicstarter
Ik heb een window gemaakt met daarin de volgende componenten:
een jScrollPane met daarin een JTree
En een JButton (in het normale frame).

Die JTree kan namelijk erg groot worden. Vandaar dat ik hem scrollable wil hebben. Maar het lukt mij op dit moment niet, om die jScrollPane netjes te laten resizen als ik bijvoorbeeld het windows maximaliseer. Ik had eerst een preferred size opgegeven, maar dan werd ie ook nooit groter dan de preferred size, ook niet in een gemaximaliseerd scherm.
Hoe kan ik ervoor zorgen dat de ScrollPane zeg maar altijd x-25 hoogte is en y breed is.
25 is dan de button grootte.
Verder werk ik in een gridbag layout.
Ik heb al vanalles geporbeerd, maar niets werkt.
En zoiets moet toch zeker te doen zijn....

Systeempje; Ballaida of Avalon in GuildWars


  • momania
  • Registratie: Mei 2000
  • Laatst online: 26-04 10:42

momania

iPhone 30! Bam!

Geef eens wat voorbeeld code :)

Neem je whisky mee, is het te weinig... *zucht*


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Aangezien je een gridlayout gebruikt, zet je wel de juiste anchor/fill proeprties?

Roomba E5 te koop


  • JaWi
  • Registratie: Maart 2003
  • Laatst online: 14-01 21:58

JaWi

maak het maar stuk hoor...

Zet de "fill" optie van je GridBagConstraint op "GridBagConstraints.BOTH" als je je JScrollPane op je panel zet.

Statistics are like bikinis. What they reveal is suggestive, but what they hide is vital.


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 24-04 22:02
Probeer de methoden getPreferredSize, getMinimumSize en getMaximum size te overriden van de tree en geeft hierbij je eigen maten terug. zou moeten werken

  • Balachmar
  • Registratie: Mei 2002
  • Laatst online: 21-03 16:52

Balachmar

The truth is out there

Topicstarter
Astu:
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import java.util.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.JTree;
import java.awt.Dimension;
/*
 * PathwayFinderWindow.java
 *
 * Created on November 1, 2005, 1:05 PM
 */

/**
 *
 * @author  willem
 */
public class PathwayFinderWindow extends javax.swing.JFrame {
    
    ArrayList pathway2ReactionName = new ArrayList();
    Hashtable reactionID2Value = new Hashtable();
    int minusx;
    int minusy;
    
    /** Creates new form TestFrame */
    public PathwayFinderWindow() {
        initComponents();
    }
    
    /** Creates new form TestFrame */
    public PathwayFinderWindow(ArrayList pw2RName, Hashtable rID2Value) {
        pathway2ReactionName = pw2RName;
        reactionID2Value = rID2Value;
        initComponents();
        initComponentsExtra();
        createTree(pw2RName);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jScrollPane1 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jButton1 = new javax.swing.JButton();

        getContentPane().setLayout(new java.awt.GridBagLayout());

        setAlwaysOnTop(true);
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });

        jScrollPane1.setPreferredSize(new java.awt.Dimension(400, 600));
        jScrollPane1.setViewportView(jTree1);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        getContentPane().add(jScrollPane1, gridBagConstraints);

        jButton1.setText("Show pathway");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        getContentPane().add(jButton1, gridBagConstraints);

        pack();
    }
    // </editor-fold>

    private void formComponentResized(java.awt.event.ComponentEvent evt) {
        int height = this.HEIGHT;
        int width = this.WIDTH;
        jScrollPane1.setSize(height-minusy, width-minusx);    
    }

    private void initComponentsExtra(){
        minusx = this.WIDTH - jScrollPane1.WIDTH;
        minusy = this.HEIGHT - jScrollPane1.HEIGHT;
    }
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
        //get selected object
        //check if it is a pathway, or a reaction
        //if reaction then get parent
        //plot pathway
        //edit visualStyle for colouring
    }                                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PathwayFinderWindow().setVisible(true);
            }
        });
    }
    
    public void createTree(ArrayList pathway2ReactionName){
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Pathways");
        DefaultTreeModel treeModel = new DefaultTreeModel(root);
        DefaultMutableTreeNode pathway = null;
        for(Iterator it = pathway2ReactionName.iterator(); it.hasNext();){
            ArrayList pathwayInfo = (ArrayList)it.next();
            int counter = 0;
            int length = pathwayInfo.size() - 2;
            String pathwayName = "";
            for(Iterator i = pathwayInfo.iterator(); i.hasNext();){
                String info = (String)i.next();
                if(counter == 0){
                    pathwayName = info;
                }
                if(counter == 1){
                    pathwayName = pathwayName + " | " + String.valueOf(length) + "/" + info;
                    pathway = new DefaultMutableTreeNode(pathwayName);
                    treeModel.insertNodeInto(pathway, root, root.getChildCount());
                }
                if(counter > 1){
                    DefaultMutableTreeNode reaction = new DefaultMutableTreeNode(info);
                    treeModel.insertNodeInto(reaction, pathway, pathway.getChildCount());
                }
                counter++;
            }
        }
        treeModel.reload();
        jTree1.setModel(treeModel);
    }
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTree jTree1;
    // End of variables declaration
    
}


Het zelf opgeven van de maten lijkt dus ook niet echt te werken...

Systeempje; Ballaida of Avalon in GuildWars


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 19:25
Om "fill" te laten werken moet je volgens mij ook een "weight" opgeven:
Java:
1
2
3
4
5
6
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
getContentPane().add(jScrollPane1, gridBagConstraints);

Dan werkt het hier in ieder geval perfect.

Roomba E5 te koop


  • momania
  • Registratie: Mei 2000
  • Laatst online: 26-04 10:42

momania

iPhone 30! Bam!

sig69 schreef op donderdag 03 november 2005 @ 12:19:
Om "fill" te laten werken moet je volgens mij ook een "weight" opgeven:
Helemaal juist :Y)

Neem je whisky mee, is het te weinig... *zucht*


  • Balachmar
  • Registratie: Mei 2002
  • Laatst online: 21-03 16:52

Balachmar

The truth is out there

Topicstarter
sig69 schreef op donderdag 03 november 2005 @ 12:19:
Om "fill" te laten werken moet je volgens mij ook een "weight" opgeven:
Java:
1
2
3
4
5
6
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
getContentPane().add(jScrollPane1, gridBagConstraints);

Dan werkt het hier in ieder geval perfect.
8)7
_/-\o_
Echt super bedankt, jammer dat het me 3 uur heeft gekost, maar nuttige info voor in de toekomst :)

Systeempje; Ballaida of Avalon in GuildWars

Pagina: 1